スロークエリログはSQLの実行に時間がかかったクエリをログ出力できるよ。
ログを出力するということはI/Oが増加するが、細かなデバッグがしやすくなるよ。
わりと構築中はONにしておいて、トラブルシュートし、それが解消したらOFFにするのが王道らしい。
my.cnfか、my.cnf.d内のファイルに記載する
以下は0.5秒以上SQLの実行に時間を要した場合出力される
1 2 3 4 |
[root@db01 ~]# cat /etc/my.cnf | grep slow_query_log [root@db01 ~]# cat /etc/my.cnf.d/myopt.cnf | grep slow_query_log slow_query_log = ON long_query_time=0.5 |
DBにログインし、見てみる
1 2 3 4 5 6 7 8 |
mysql> show variables like 'slow%'; +---------------------+-------------------------------------------+ | Variable_name | Value | +---------------------+-------------------------------------------+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/db01-slow.log | +---------------------+-------------------------------------------+ |
2 Comments
2 Records
たに wrote:
遅いSQLが発生した場合、そのSQLの前に、EXPLAINを付けると、SQLの実行計画が表示され、どのように実行されているか、見ることができます。
遅いSQLを、どう改善すればいいかの答えは教えてくれないですが、どう改善するかの参考になるかと思います。
yuta wrote:
そんなことができるのですね、ありがとうございます!
ちょっと試してみます!