解释计划中的成本,基数和字节是什么意思?

时间:2018-02-11 14:11:22

标签: oracle plsqldeveloper sql-tuning

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

当我在PL / SQL Developer中编写此查询并按F5时,我看到解释计划, 但我不知道成本,基数和字节代表什么。

2 个答案:

答案 0 :(得分:7)

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

什么是成本?

  

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

您还可以查看Database Performance Tuning Guide,其中包含:

  

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

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

答案 1 :(得分:5)

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

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

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

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

基数是优化程序猜测为计划步骤处理的行数。如果统计数据是旧的,丢失的或不完整的 - 那么这可能是非常错误的。您想要查找优化器看到5行(基数)的位置,但实际上有50,000行。

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

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