1. CBO(Cost-Based Optimizer)的代价估算模型,选择率、基数、CPU/IO/网络代价的统计与回归?
CBO(代价优化器)的代价估算模型如何工作?选择率、基数以及 CPU/IO/网络代价如何统计与回归?
- 选择率(selectivity)与基数(cardinality)的估算
- 物理代价(CPU、IO、网络)的加权与标定
- 代价模型误差的来源与回归校准
CBO 通过估算每个算子的代价并选择总代价最小的执行计划。其核心输入是选择率(selectivity,谓词过滤后保留行数的比例)和基数(cardinality,操作输出行数估计),它们由统计信息(直方图、采样、唯一值数)推导。在此基础上,代价模型把各类物理操作量化:CPU 代价(每行/每算子的处理成本)、IO 代价(读页/读盘次数)、网络代价(MPP 中跨节点传输的字节量),每类乘以对应的标定权重(如磁盘 IO 的权重远高于内存计算)后求和,得到算子与计划的代价。为让模型贴合实际硬件,代价权重需要做硬件标定(用基准测试测出各操作的真实耗时),并可用真实执行结果做回归校准,减少模型与实际的偏差。
CBO 的准确性取决于"基数/选择率估计"与"物理代价标定"两者,前者决定算子输入规模,后者决定单位成本,任一不准则整体代价误导。