代码分支版本:master 20240102
代价估计
利用代价模型(cost model)比较不同执行计划的优劣,代价估计模型需考虑:
- 统计信息:数据分布、行数、Distinct值个数
- 统计信息收集时机与方法:
- 不能影响在线业务;
- 采样收集;
- 基数估计->代价估计:基数估计来估算中间结果个数,从而用于代价估计
统计数据假设
- 均匀分布假设(uniform distribution assumption):
- 认为属性内部取值是均匀分布的
- 属性独立假设(attribute independence assumption):
- 认为不同属性的取值之间相互独立
通过代码总结的基数估计公式
补充说明:
- 基数估计的方式有很多,比如:
- 直方图,但是暂时因为消耗内存,回滚了(详见PR:https://github.com/apache/doris/pull/27896);
- Count-Min算法 估计数据出现频率,这个在Doris代码中应该是没有使用;
doris中基数估计暂时是依托于统计的列信息和表行数来进行计算的。
2.我总结的基数估计的推导公式均是通过代码反推的,部分数学公式如有不准的地方希望您能帮忙指出,不胜感激