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)