ページの先頭行へ戻る
HA Database Ready 業務開発ガイド(Open SQL編)
FUJITSU Integrated System

5.1.1 遅いSQL文の見つけ方

システムビューpg_stat_statementsは、実行されたすべてのSQL文の統計情報を参照できます。これを利用して、レスポンスの遅いSQL文を特定します。

以下のSQL文を実行することで平均実行時間の長い順番にSQL文を確認することができます。

SELECT userid, dbid, query, calls, total_time, (total_time / calls) as average_time FROM pg_stat_statements ORDER BY average_time DESC;

定期的にこの情報を監視することで、現在と過去の平均実行時間の差が求められ、時間の経過とともに遅延傾向にあるSQL文を特定することができます。

また、システムビューpgx_query_responseを利用することで、上記のSQL文と同じ結果を取得できます。

psqlでの実行例

postgres=# SELECT * FROM pgx_query_response;
 userid |  dbid |             query       | calls | total_time | average_time
--------+-------+-------------------------+-------+------------+--------------
     10 | 12699 | SELECT * FROM TBL1      |     2 |   2.958181 |     1.4790905
     10 | 12699 | SELECT * FROM TBL2      |     3 |   0.315318 |      0.105106

参考

トランザクションやSQL文のタイムアウトの発生を監視することで、レスポンスの低下のモニタリングも可能です。