成本与一致收益
这说明在查询计划中看到具有较低成本但在自动跟踪中获得较高一致性的查询意味着什么?在这种情况下,成本为100英镑,而CR则为数百万英镑。
解决方案
充其量,成本是优化程序对查询将执行的I / O数量的估计。因此,充其量来说,只有在优化器找到了一个很好的计划时,该成本才可能是准确的-如果优化器对成本的估算是正确的并且该计划是理想的,那通常意味着我们永远都不会费心寻找按计划进行,因为该查询的效果会相当好。
但是,一致的获取数是查询实际执行的获取数的实际度量。因此,这是使用起来更准确的基准。
尽管有很多因素会影响成本,而有一些因素会影响一致获取的数量,但是可以合理地预期,如果成本非常低,而一致获取的数量非常多,那么优化器可能无法很好地估计各个步骤的基数(PLAN_TABLE中的ROWS列告诉我们每个步骤中返回的预期行数)。这可能表明我们缺少统计信息或者统计信息过时,缺少某些直方图,初始化参数或者系统统计信息在某种程度上是错误的,或者CBO由于其他原因而无法估计结果的基数。
我们正在使用哪个版本的Oracle?
成本可能代表两种不同的情况,具体取决于版本以及我们是否在基于cpu的成本核算模式下运行。
简而言之,成本表示优化程序期望查询执行的时间量,但以单个块读取所花费的时间量为单位来表示。例如,如果Oracle期望单个块读取花费1毫秒,而查询花费20毫秒,则成本等于20。
一致性获取由于以下原因而与之不完全匹配:成本包括不一致的(当前)获取(例如,读取和写入临时数据),成本包括CPU时间,并且一致性获取可以是多块读取而不是单个块读取,因此具有不同的持续时间。 Oracle还可能完全错误地估算出成本,并且最终可能需要比所建议的估算更多或者更少的一致收益。
可以用来解释预测执行计划与实际性能之间脱节的有用方法是"基数反馈"。请参阅此演示文稿:http://www.centrexcc.com/Tuning%20by%20Cardinality%20Feedback.ppt.pdf