📚
Amazon RDSでスロークエリを出力し、パフォーマンス改善に繋げる
背景
- DBのパフォーマンス低下の懸念があり、スロークエリを出力することで時間のかかっているクエリを特定し、改善に繋げたい
RDSの設定
-
AWSコンソールからRDSを選択し、該当のDBのダッシュボードに入る
-
「設定」から「DB インスタンスパラメータグループ」を選択
-
パラメータで以下の設定に変更する
-
slow_query_log
を1
に設定し、有効化する -
long_query_time
を確認したい秒数に設定する
-
-
スロークエリが有効になっているかを確認する
SHOW VARIABLES LIKE 'slow_query%'
-
何秒をスロークエリと判断しているか確認する
show variables like 'long%';
-
スロークエリの有無を確認する
SELECT * FROM mysql.slow_log;
SlowQueryの原因を確認する
確認環境で上記のスロークエリが格納されているかを確認したところ、複数件スロークエリ情報が格納されていました。
そこで次は原因となっているクエリの特定作業になりますが、 sql_text
に問題となったクエリが格納されるため、そこを確認します。
ただし sql_text
のデータが BLOB
形式となっており、そのまま確認することができませんでした。
そこで以下のSQLを実行することで、 BLOB
を変換し問題のクエリを確認できるようにします。
SELECT *, CONVERT(sql_text USING utf8) AS readable_sql_text FROM mysql.slow_log;
上記のクエリでは、CONVERT()関数を使用して、sql_textカラムのBLOBデータをUTF-8形式のテキストデータに変換しています。
上記のクエリ実行で問題のあるクエリが特定できたら、あとはその原因を個別で調査していきましょう。
Discussion