什么是CBO?
CBO(Cost-Based Optimization)基于开销的优化。能够在众多执行计划中依据开销选出最高效的执行计划,从而提高数据库的性能。

既然是基于事务执行开销的选优,那开销是怎样计算的呢?
事务开销的计算
对于每个事务的执行计划,CBO会基于统计信息计算出一个预期的成本值。这个成本通常以CPU、I/O操作、内存消耗等形式量化。
例如一条SQL查询(SELECT)语句的执行过程,如下所示:

成本估算涉及到一系列复杂的计算过程,比如:
- 计算全表扫描或索引扫描的成本,考虑磁盘I/O和CPU处理;
- 估算连接操作的成本,考虑联接类型(Nested Loops, Hash Join, Sort Merge Join)和参与联接的记录数量;
- 预测排序操作的成本,考虑内存可用性和临时区的使用;
- 考虑到其他资源消耗,如缓冲区缓存命中率、网络传输等。
统计信息度包含哪些?
CBO适用于大多数需要高效查询性能的场景。特别是对于复杂的SQL语句,CBO可以更好地评估和比较各种查询路径的成本,从而选择出最优的执行计划。由于CBO依赖于统计信息来做出决策,因此在数据分布发生变化或者新数据加载之后,更新统计信息是保持CBO优化效果的关键。
- CBO依赖于数据库对象(如表、索引)上的统计信息来估算数据量、数据分布以及索引

最低0.47元/天 解锁文章
644

被折叠的 条评论
为什么被折叠?



