站内公告:
2024-08-26 06:11:34
oracle optimizer:迁移到使用基于成本的优化器—–系列1.2
3.2基于成本的优化器(cbo)
基于成本优化器遵循计算代价的方法学。所有的执行计划随成本标识,优化器选择成本最低的一个。在执行计划中,较高的成本将意味着较高的资源。成本越低,对查询来说越高效。
cbo使用所有存储在数据字典中可用的统计资料信息和柱状图,用户提供提示和的参数设置来达成使用的成本,cbo生成所有可能访问方法的排列然后选择最合适的。排列的数量依赖于查询中出现的表数量,有时能达到约80,000个排列甚至更多,请参考系列的第二部分参数章节来设置相关参数。
cbo也可能完成诸如查询转换、视图合并或转换的操作,增加join谓词等等。
这将改变原始语句并改变正存在或者是新添加的谓词,得自新的访问计划的所有的这些目的会比原来存在的好些。注意转换并不影响返回的数据,而仅仅是执行路径,请参考系列第二部分参数章节相关联的信息。
3.2.1统计资料
统计资料按顺序提供了准确的输入以供cbo正常工作;生成的数据存储在对象中并且包括诸如表中行的数量、列中单一值、索引中页的块数等等信息。统计资料越准确,优化器提供的结果越高效。请参考本系列第三部分生成统计资料章节中怎样生成这些信息和如何最好地维持它。统计资料可能是精确的或估计的,它用compute 子句分析在对象中所有的数据,它将给优化器精确的信息以工作并且达到完美的执行计划。
用estimate子句,将会分析在对象中提及的样本大小的数据内容从而生成统计资料,样本大小会被指定成随机分析的行的数量或者行的百分比从而生成统计资料,也可以指定可选的块样例,如果系统中存在巨额表数据,它将节约时间。
好的执行计划的前提依赖于估计值和精确值有多接近,可