v $ sqlarea:为什么elapsed_time小于user_io_time + cpu_time?

时间:2012-09-04 23:53:27

标签: oracle performance

运行时:

select user_io_wait_time, cpu_time, elapsed_time, user_io_wait_time + cpu_time
from v$sqlarea where /* filter */

我得到如下输出。你能解释一下为什么cpu_time和user_io_wait_time的总和大于elapsed_time?我以为elapsed_time将是在查询上花费的总时间,包括user_io,cpu,system io,concurrency等。所有返回的行代表长时间运行的更新语句。 Oracle 10g。谢谢,托马斯。

USER_IO_WAIT    CPU_TIME    ELAPSED_TIME    USER_IO_WAIT+CPU_TIME
721189651        32450000      742860743    753639651
719109237        32540000      740826171    751649237
720330754        32540000      741987150    752870754
725473348        32670000      747215507    758143348
720799316        32540000      742501530    753339316
725361991        33000000      747416902    758361991
725387023        32830000      747236752    758217023
720383321        32210000      741849457    752593321

1 个答案:

答案 0 :(得分:2)

ELAPSED_TIME只是elapsed time used by the cursor for parsing, executing, and fetching

CPU_TIMECPU time (in microseconds) used by this cursor for parsing, executing, and fetching

显然CPU_TIME不包括用户时间,并发和应用程序等待时间等,并且USER_IO时间不考虑cpu时间,并发和应用程序等待时间等。找出ELAPSED_TIME的组成部分非常困难(但并非不可能)。

This应该让您对v$sqlarea

有一个了解