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