dba_hist_sqlstats中的elapsed_time_delta是不是实际的查询运行时间?

时间:2018-06-08 20:42:44

标签: oracle

我一直在尝试探索DBA_HIST_SQLSTAT表。遇到一个含糊不清的专栏(实际上更多)ELAPSED_TIME_DELTA。我运行了一个简单的删除查询并记下了所花费的时间。但是,当我查询DBA_HIST_SQLSTAT并查看ELAPSED_TIME_DELTA列(我知道单位为ms)时,显示的时间与我手动捕获的时间不同。所有这些都归ELAPSED_TIME_DELTA表中的DBA_HIST_SQLSTAT所有?任何有关示例的解释都非常感激。

1 个答案:

答案 0 :(得分:2)

(假设您的意思是ELAPSED_TIME列。EXECUTION_TIME中没有DBA_HIST_SQLSTAT列。

elapsed_time_delta是先前快照与当前快照的elapsed_time_total之间的差异。

elapsed_time_total是执行该查询以来进入库高速缓存所花费的总时间。这不一定等于"挂钟"任何单个执行该查询的时间,除了第一个用户第一次执行查询之外 - 并且只有在第一次执行之后和之后的任何执行之前抓取snap_id

这很难做到并且总是不可能。一般来说,您无法使用DBA_HIST_SQLSTAT来判断Oracle花了多长时间来运行特定查询的特定执行。

可以告诉您Oracle平均花费多长时间运行该查询 - 找到感兴趣的最新snap_id并划分elapsed_time_total } nullif(executions_total,0)