Postgresで重たいクエリを確認する方法【pg_stat_statementsを使おう】

Postgresで重たいクエリを確認する方法【pg_stat_statementsを使おう】プログラミング
Postgresで重たいクエリを確認する方法【pg_stat_statementsを使おう】

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クエリによって影響を受けたレコードの総数
avg1つのクエリが実行された平均秒数

まとめ

この記事のおさらい
  • Postgresで重いクエリを確認したい場合は『pg_stat_statements』を使おう

いかがだったでしょうか。

アプリ開発時以外でも運用時やトラブル時にも便利な機能となりますので、是非覚えておく事をオススメ致します。