2

运行时:

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、系统 io、并发等。所有返回的行都代表长时间运行的更新语句。甲骨文 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
4

1 回答 1

2

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

CPU_TIME是个CPU time (in microseconds) used by this cursor for parsing, executing, and fetching

显然CPU_TIME不包括用户 io 时间、并发和应用程序等待时间等,以同样的方式和USER_IO时间不考虑 cpu 时间、并发和应用程序等待时间等,而且很难(但并非不可能)找出的组成部分ELAPSED_TIME

应该让您对v$sqlarea.

于 2012-09-05T00:49:36.337 回答