成本与一致性得到

时间:2008-10-01 17:42:01

标签: database sql-execution-plan

在解释计划中查看成本较低的查询但在autotrace中获得高一致性的指示是什么意思?在这种情况下,成本是100,CR是数百万。

2 个答案:

答案 0 :(得分:3)

充其量,成本是优化程序对查询执行的I / O数量的估计。因此,最好的情况是,如果优化器找到了一个非常好的计划,那么成本可能是准确的 - 如果优化器的成本估算是正确的并且计划是理想的,那通常意味着你永远不会打扰查看该计划,因为该查询将表现得相当不错。

然而,一致性是对查询实际执行的获取次数的实际度量。这是一个更准确的基准测试。

虽然有许多事情可以影响成本,但有一些事情会影响一致性获取的数量,但如果你的成本非常低且一致性非常高,那么可能是合理的。得到优化器可能正在处理对各个步骤的基数的不良估计(PLAN_TABLE中的ROWS列告诉您每个步骤中返回的预期行数)。这可能表示您丢失或过时的统计信息,缺少某些直方图,初始化参数或系统统计信息在某种程度上是错误的,或者CBO由于某些其他原因而导致问题估计结果的基数。

您使用的是哪个版本的Oracle?

答案 1 :(得分:3)

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

简而言之,成本表示优化程序期望查询执行的时间量,但它以单个块读取所花费的时间量为单位表示。例如,如果Oracle期望单个块读取花费1ms并且查询花费20ms,则成本等于20。

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

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