是什么导致Oracle tkprof文件中的CPU时间和经过时间之间的差异

Lau*_*raB 4 oracle performance

在分析Oracle tkprof跟踪文件时,我注意到cpu时间和经过时间之间有时存在很大差异,我不知道是什么导致它.

例如:

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00      42.09          0          0          0           0
Execute      1      0.01       0.01          0          0          0           0
Fetch       45     14.44      62.71      48664     505513          0        1871
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       47     14.45     104.82      48664     505513          0        1871
Run Code Online (Sandbox Code Playgroud)

等待统计信息如下:

 Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                      46        0.00          0.00
  SQL*Net message from client                    46        0.19          1.68
  buffer busy waits                             559        0.23          8.59
  db file scattered read                       5204        0.21          7.49
  db file sequential read                      4240        0.20         13.49
  latch free                                    215        0.11          3.62
Run Code Online (Sandbox Code Playgroud)

我是一名软件开发人员(不是DBA),因此我通常会查看这些跟踪文件以查找效率低下的查询或查看索引是否可用于停止全表扫描等等.为此我倾向于继续使用cpu时间.在大多数情况下,经过的时间与cpu时间非常相似.

我无法访问生成跟踪文件的数据库(它来自客户端站点),但我想了解发生了什么,以便我可以就如何减少已用时间提出建议.

Ton*_*ews 9

CPU时间是您的查询实际需要的时间; 其余的都在等待资源.在繁忙的服务器上,这可能主要是由于等待其他用户当前正在使用的CPU; 这不会出现在等待统计数据中.