ここでは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チューニング方法まとめ