oracle执行计划中cost cpu

本文转自: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中占的百分比


你可能感兴趣的:(oracle)