遅いSQL(処理時間が長い)と実行回数の多いSQLの確認方法


ここではORACLEデータベースで、遅いSQL(処理時間が長い)と実行回数の多いSQLの確認方法を紹介します。

DISK読取回数の多いSQLの調査は↓を参考にしてください。
>>【SQL】DISK読取回数の多いSQL(I/O負荷の高い)の確認する方法

遅いSQL(処理時間が長い)と実行回数の多いSQLの確認方法

遅いSQL(処理時間が長い)と実行回数の多いSQLを確認するときには、ORACLEデータベースの既存の「動的パフォーマンスビュー」を参照します。

「動的パフォーマンスビュー」の中のv$SQLというビューを参照することで、SQLの処理時間や実行回数が確認できます。

処理時間はELAPSED_TIME列、実行回数はEXECUTIONS列で確認することが出来ます。

次のSQLではv$SQLで処理時間の遅い順にSQLをソートしています。これで簡単に遅いSQLを確認することが出来ます。

select
    SQL_TEXT
    ,ELAPSED_TIME --処理時間
    ,EXECUTIONS --実行回数
    ,ELAPSED_TIME/EXECUTIONS --一回あたりの平均処理時間
from
    v$SQL
order
    ELAPSED_TIME desc;

SQL本文を全て表示する方法

先ほどのv$SQLからSELECTした内容に加えて、更にSQL本文を全て表示させたい場合は、SELECT句でSQL_FULLTEXTという項目を指定してください。

SQLは次の通りです。

select
    SQL_FULLTEXT --SQL本文を全て表示
    ,ELAPSED_TIME --処理時間
    ,EXECUTIONS --実行回数
    ,ELAPSED_TIME/EXECUTIONS --一回あたりの平均処理時間
from
    v$SQL
order
    ELAPSED_TIME desc;

まとめ

遅いSQL(処理時間が長い)と実行回数の多いSQLの確認方法を確認するときは、v$SQLを参照します。

遅いSQLを特定したら、SQLが遅い原因を特定し、チューニングする必要があります。SQLが遅い原因は↓で紹介していますのでぜひ参考にしてください。
>>SQLのレスポンスが遅い原因3つ

ほかにもSQLのチューニングについては↓で紹介していますのでぜひ参考にしてください。
>>SELECT文のSQLチューニング方法まとめ