bigmac-jp blog

web開発関連のメモ

MySQL メモ2 InnoDB最低限の設定(スロークエリ編)

MySQLをインストールした場合に、最低限の設定設定(チューニング編)をメモしておく。

スロークエリ設定

MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.2.5 スロークエリーログ

処理の遅いクエリを見つけるために、スロークエリログの出力が大切になる。
設定した秒数よりも遅いクエリが実行された場合に、MySQLが自動的に出力してくれるため、
スロークエリログを監視すれば、改善必須のクエリを発見することができる。

開発・検証時にはデータが少なく、処理が速かったクエリも、本番環境である日突然遅くなる場合もある。

デフォルトの設定では、スロークエリは出力しないため設定が必須。

まずはスロークエリの設定を確認。

mysql> show variables like ‘slow_query%‘;
+---------------------+------------------------------------------+
| Variable_name       | Value                                    |
+---------------------+------------------------------------------+
| slow_query_log      | OFF                                      |
| slow_query_log_file | /var/lib/mysql/ip-172-31-32-209-slow.log |
+---------------------+------------------------------------------+
2 rows in set (0.01 sec)

" slow_query_log"が"OFF"になっている。

vi /etc/my.cnf

[mysqld]
slow_query_log=1
long_query_time=3
log_queries_not_using_indexes=1
slow_query_log_file=/usr/local/var/mysql/slow_query.log
  • slow_query_log

 "1" or "なにも設定しない"場合はスロークリエ出力が有効化となる。"0"を設定した場合は無効化となる。

  • long_query_time=3

 設定した秒数を超えるクエリが実行された場合スロークエリログを出力する。

  • log_queries_not_using_indexes

 クエリ実行時にindexを使用していない場合スロークエリログを出力する。indexの設定漏れに気付ける。

  • slow_query_log_file

 スロークエリログの出力場所、ファイル名称を設定

※設定完了後にMySQLの再起動が必須となります。

mysql> show variables like ‘slow_query%‘;
+---------------------+-------------------------+
| Variable_name       | Value                   |
+---------------------+-------------------------+
| slow_query_log      | ON                      |
| slow_query_log_file | /var/lib/mysql/slow.log |
+---------------------+-------------------------+
2 rows in set (0.00 sec)