2010/01/19

【Oracle】CPU使用時間の長いクエリを特定するためのSQL

SELECT
*
FROM
    (
        SELECT
             sql_id
            ,last_load_time
            ,executions
            ,cpu_time
            ,cpu_time / executions / 1000000
            ,sql_id
            ,TRANSLATE( sql_text, '#' || CHR(13) || CHR(10), '#' ) sql_text
        FROM
            v$SQL
        WHERE
                module = 'w3wp.exe'
            AND executions > 0
            AND last_load_time>='2010-01-01/00:00:00'
        ORDER BY
            cpu_time / executions DESC
    )
WHERE
        rownum <= 30;



last_load_time:最後に読み込まれた日時
executions:実行回数
cpu_time:CPU使用時間
sql_text:SQL(全てじゃない)


※例はワーカープロセス(w3wp.exe)からのアクセスで、2010年01月01日の00時00分00秒以降にCPU負荷が高かったクエリを抽出するもの。

【要調査なSQL】

  • 1回当たりのCPU仕様時間(cpu_time/executions) の値が異常に高いもの(数十秒とか)
  • 1回当たりのCPU仕様時間(cpu_time/executions) が1秒以上で実行回数(executions)が多いもの



0 件のコメント:

コメントを投稿