はじめに
DB利用において、レイテンシーを向上させる方法として、スロークエリログを取得し、該当クエリの改善を図る。
ここでは、スロークエリの取得から本番環境へ適用するまでを残す。
【環境】
- RDS for MySQL 5.7.34
手順
RDSのパラメータグループを変更
パラメータグループの変更箇所
# 通常ログを有効化(デフォルト値は 0 またはログなし)
general_log = 1
# スロークエリを有効化(デフォルト値は 0 またはログなし)
slow_query_log = 1
# ログに出力するスロークエリの秒数を指定(この値を閾値にスロークエリと判定。μs単位まで指定可能)
long_query_time = 3
# 一般クエリログとスロークエリログの両方をファイルシステムに書き込み、Amazon RDS コンソールからログを表示
log_output = FILE
RDSの設定変更
ログのエクスポートでスロークエリログ
にチェック
設定変更後、RDSを再起動
(※パラメータグループの内容を変更した場合、RDSを再起動させる必要があります。)
CloudWatchでログ確認
RDS再起動後、RDSが存在する環境で適当にクエリが重そうな箇所をポチポチいじる。
数分後、CloudWatchのロググループに/aws/rds/instance/{DB名}/slowquery
とうロググループが出来上がる。
ログを確認すると、スロークエリに該当するSQL発行ログが蓄積されている。
これで終了!
本番環境のRDSに設定するまでの流れ
- 検証環境用の新しいパラメータグループを作成(既存からのコピーして複製)
- スロークエリを取得できるようにパラメータグループを変更
- 変更後、手動でRDS再起動する必要あり
- 検証環境で検証
- CloudWatchでスロークエリログ取得の確認
- 本番環境用、パラメータグループの変更
- 変更後、手動でRDS再起動する必要あり
参考