存在两种代价模型:一种是IO代价模型;另一种是CPU代价模型。通过初始化参数_optimizer_cost_model控制。该参数允许以下值:
IO:IO代价模型,在这种模式下仅估算IO次数而不考虑时间因素。例如,完成一次单数据块读和完成一次多数据块读所需的时间是不同的,但这种模式下两者是等价的。
CPU:CPU代价模型,计算IO代价的同时,计算CPU代价,并使用系统统计数据计算出CPU代价向IO代价转换的计算因子,将CPU转换为IO代价。
FIXED:CPU代价模型,计算IO代价的同时,计算CPU代价,并使用系统内部固定值将CPU转换为IO代价。
IO:IO代价模型,在这种模式下仅估算IO次数而不考虑时间因素。例如,完成一次单数据块读和完成一次多数据块读所需的时间是不同的,但这种模式下两者是等价的。
CPU:CPU代价模型,计算IO代价的同时,计算CPU代价,并使用系统统计数据计算出CPU代价向IO代价转换的计算因子,将CPU转换为IO代价。
FIXED:CPU代价模型,计算IO代价的同时,计算CPU代价,并使用系统内部固定值将CPU转换为IO代价。
CHOOSE:默认值,如果存在可用的系统统计数据,则采用CPU代价模型,否则采用IO代价模型。