4

在解释计划中看到具有低成本但在自动跟踪中获得高一致性的查询意味着什么?在这种情况下,成本是 100 美元,而 CR 是数百万美元。

4

2 回答 2

4

充其量,成本是优化器对查询将执行的 I/O 数量的估计。因此,充其量,只有在优化器找到了一个非常好的计划时,成本才可能是准确的——如果优化器对成本的估计是正确的并且计划是理想的,那通常意味着你永远不会去打扰查看计划,因为该查询将执行得相当好。

然而,一致获取是查询实际执行的获取数量的实际度量。所以这是一个更准确的基准。

尽管有很多很多因素会影响成本,还有一些因素会影响一致获取的数量,但如果您的成本非常低且一致获取的数量非常多,那么可以合理地预期优化器可能对各个步骤的基数估计不佳(PLAN_TABLE 中的 ROWS 列告诉您每个步骤中返回的预期行数)。这可能表明您缺少或过时的统计数据,您缺少一些直方图,您的初始化参数或系统统计数据在某种程度上是错误的,或者 CBO 由于某些其他原因在估计您的结果的基数时出现问题。

您使用的是什么版本的 Oracle?

于 2008-10-01T18:29:40.660 回答
4

根据版本以及您是否在基于 cpu 的成本计算模式下运行,成本可以代表两种不同的东西。

简而言之,成本表示优化器期望查询执行的时间量,但它以单个块读取所花费的时间量为单位表示。例如,如果 Oracle 预计单个块读取需要 1 毫秒,而查询需要 20 毫秒,那么成本等于 20。

一致性获取与此不完全匹配的原因有很多:成本包括非一致性(当前)获取(例如读取和写入临时数据),成本包括 CPU 时间,并且一致性获取可以是多块读取而不是单个块读取,因此具有不同的持续时间。Oracle 还可能会完全错误地估算成本,并且最终可能需要比建议的估算更多或更少的一致获取。

一种可以解释预测执行计划与实际性能之间脱节的有用方法是“基数反馈”。请参阅此演示文稿:http ://www.centrexcc.com/Tuning%20by%20Cardinality%20Feedback.ppt.pdf

于 2008-10-01T18:47:21.990 回答