【问题标题】:What is the meaning of Cost, Cardinality and Bytes in Explain Plan? [closed]解释计划中的成本、基数和字节是什么意思? [关闭]
【发布时间】:2018-07-21 19:00:27
【问题描述】:

这是一个简单的查询:select * from customers

当我在 PL/SQL Developer 中编写此查询并按 F5 时,我看到了解释计划, 但我不知道 Cost、Cardinality 和 Bytes 代表什么。

【问题讨论】:

  • 文档有什么不明白的地方吗?
  • 如何获取成本或字节数?

标签: oracle plsqldeveloper sql-tuning


【解决方案1】:

有关计划表列的说明,请参阅第 12.10 节。

https://docs.oracle.com/cd/E11882_01/server.112/e41573/ex_plan.htm#PFGRF009

成本是优化器估计通过特定计划运行查询的工作量。优化器通常更喜欢成本较低的计划。

成本由几个不同的因素决定,但表格统计数据是最大的因素之一。

基数是优化器猜测的计划步骤中将处理的行数。如果统计数据是旧的、缺失的或不完整的——那么这可能是非常错误的。您想查找优化器在哪里看到 5 行(基数),但实际上有 50,000 行。

字节与基数的概念相同,但纯粹是要处理的数据与表中的行。

这是一个非常深奥的话题,需要积极的学习和经验。我敢肯定,很多人都可以为要去的地方提供想法。我个人很喜欢Maria's blog.她是优化器的前产品经理。

【讨论】:

    【解决方案2】:

    来自http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf

    什么是成本?

    Oracle 优化器是一个基于成本的优化器。执行计划 为 SQL 语句选择的只是众多备选方案之一 优化器考虑的执行计划。优化器选择 成本最低的执行计划,其中成本表示 该计划的估计资源使用情况。成本越低越多 该计划预计将是有效的。优化器的成本模型 占将要使用的 IO、CPU 和网络资源 查询。图 8:成本位于第 5 列 执行计划 整个计划的成本(在第 0 行表示)和 每个单独的操作都显示在执行计划中。然而, 它不是可以调整或改变的东西。费用是一个 内部单位,仅显示以允许计划比较。

    您也可以查看Database Performance Tuning Guide,上面写着:

    此列的值没有任何特定的单位 测量;它只是用于比较成本的加权值 执行计划。该列的值是 CPU_COST 和 IO_COST 列。

    所以 - COST 是一个无量纲值,它是 CPU 和 IO 成本的函数。

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 2022-10-31
      • 2016-01-02
      • 2017-01-21
      • 2018-02-19
      • 2013-12-23
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多