LoginSignup
4
4

More than 1 year has passed since last update.

Aurora (Amazon RDS for PostgreSQL) でスロークエリを出力する方法

Posted at

はじめに

担当しているWebサービスがなぜ遅いのか特定するために、時間のかかるクエリを確認する必要がありました。
今日は、その時に知ったAurora (Amazon RDS for PostgreSQL)で、スロークエリを発行する方法について書きます。

PostgreSQLはMySQLと違って、設定が少しだけ面倒なんです...

最初に結論

パラメータグループに以下を設定します。

1000ms以上かかったクエリが出力される
log_statement mod
log_min_duration_statement 1000

前提

RDSへの接続がされていることを前提としています。

パラメータグループの作成

1.新規パラメータグループを作成
スクリーンショット 2022-01-08 11.11.40.png

2.タイプ「DB Cluster Parameter Group」を選択
DB Parameter Group ・・・ 特定のインスタンスにのみ適用できる
DB Cluster Parameter Group ・・・ クラスター全体に適用できる
スクリーンショット 2022-01-10 13.38.46.png

3.作成したパラメータグループを編集
以下の設定で、実行に1000ms以上かかったクエリがログに出力されます。

log_statement mod
log_min_duration_statement 1000

適応タイプdynamicは、パラメータの変更をデータベースの再起動なしに変更することができます。

log_statement・・・
ddlは、CREATE、ALTER、およびDROP文といった、データ定義文を全てログに記録します。
modは、全てのddl文に加え、INSERT、UPDATE、DELETE、TRUNCATE、およびCOPY FROMといった、データ変更文をログに記録します。
https://www.postgresql.jp/document/12/html/runtime-config-logging.html

log_min_duration_statement・・・
文の実行に少なくとも指定した時間かかった場合、それぞれの文の実行に要した時間をログに記録します。 この値が単位なしで指定された場合は、ミリ秒単位であるとみなします。
https://www.postgresql.jp/document/12/html/runtime-config-logging.html

スクリーンショット 2022-01-08 11.23.21.png
スクリーンショット 2022-01-08 11.24.10.png

4.DBクラスターのパラメータグループに作成したパラメータグループを設定
スクリーンショット 2022-01-10 15.33.04.png

5.PostgreSQL ログにチェック
CloudWatchにスロークエリが出力されるようになります。
スクリーンショット 2022-01-08 11.26.31.png

実行してみる

  1. 2分待つクエリを発行する
    image.png

  2. ログを確認する
    image.png

以下のログが出力されるようになりました🎊
あとはログはフィルターして、slackに通知したりアレンジしてみてください。

2022-01-10 04:31:25 UTC:10.0.0.96(50174):postgres@postgres:[21202]:LOG:  duration: 2004.674 ms  statement: select pg_sleep(2);

注意

  • デフォルトのパラメータグループを使ってデータベースを起動していた場合、変更できないパラメータが存在します。その場合、カスタムパラメータへの変更が発生するため、データベースの再起動が必要です。なので、RDS起動時にカスタムパラメータを使用することをおすすめします。 image.png

参考

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4