Postgresを使っている時に重たいクエリを調査したい場合ってありますよね。重たいクエリを解消しないとサーバー負荷も上がりますし、アプリの動作にも影響が出てくる場合があります。
今回はそんな時に役立つ方法を紹介したいと思います。
このブログは現役のエンジニア(プログラマー歴が約12年)の僕(よしたか)が2019年12月後半から日々更新しております。
もしもアフィリエイトは会員登録後も無料です!
今すぐ会員登録してアフィリエイトを始めよう!
Postgresで重たいクエリを確認する方法
では実際に重たいクエリを確認する方法を紹介したいと思います。
pg_stat_statements
SQL実行時の統計情報を見る手段として『pg_stat_statements』があります。この記事で紹介する事以外にも色々情報を取得できるので、障害対応時にはぜひ覚えておきたいですね。(この記事ではpg_stat_statementsの導入手順は割愛させて頂きます)
pg_stat_statementsで重たいクエリを確認する方法
『pg_stat_statements』で重たいクエリを確認する方法ですが、
SELECT query, calls, total_time, rows, avg FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
このようにすると重いクエリを探す事ができます。
カラム | 説明 |
---|---|
query | 実行クエリ |
calls | 実行回数 |
total_time | クエリ実行にかかった総時間(秒単位) |
rows | クエリによって影響を受けたレコードの総数 |
avg | 1つのクエリが実行された平均秒数 |
まとめ
いかがだったでしょうか。
アプリ開発時以外でも運用時やトラブル時にも便利な機能となりますので、是非覚えておく事をオススメ致します。