oracle执行计划中cost cpu

本文解析了Oracle 10g中的执行计划成本估算方法,详细介绍了如何通过执行计划中的Cost(%CPU)来理解CPU成本和I/O成本的具体计算方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转自:http://www.itpub.net/forum.php?mod=viewthread&tid=1264620&highlight=

注:仅转部分内容。


今天研究执行计划,看到执行计划里面有Cost (%CPU),我这边研究了一把,不知道对与否,拿出来晒晒
在Oracle 10g中,Oracle 把CPU的cost也统计在执行计划中去了, 这和以前的8i,9i(9i其实已经开始了)有很大的不同。
所以用一个公式来表示cost,可以简单的写成

Cost = I/O cost + CPU cost

我虚拟机的Oracle版本是10.2.0.1

SQL> select * from dumptest;

50763 rows selected.



Execution Plan
----------------------------------------------------------
Plan hash value: 3522420958


------------------------------------------------------------------------------
| Id  | Operation         | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |          | 50763 |  4610K|   215   (3)| 00:00:02 |
|   1 |  TABLE ACCESS FULL| DUMPTEST | 50763 |  4610K|   215   (3)| 00:00:02 |
------------------------------------------------------------------------------


在这个例子中,全表扫描的cost是215(3)


那215是整个这个步骤的cost,那和它相关的CPU 和 I/O cost 分别是多少呢,可以通过v$sql_plan来查到


SQL> select cost, cpu_cost, io_cost from v$sql_plan sql where sql.plan_HASH_VALUE = '3522420958'
  2  ;


      COST   CPU_COST    IO_COST
---------- ---------- ----------
       215
       215   24910764        209


大家可以看到,第二步中IO_COST是209,总的cost是215,那么CPU的cost是多少呢 (215-209)/215 = 3%


SQL> select (215-209)/215 from dual;


(215-209)/215
-------------
   .027906977


所以这个Cost (%CPU)含义就是CPU cost在整个cost中占的百分比


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值