通常は my.cnf に以下の設定をして restart すればいいのですが、稼働中のサービスの場合、再起動したくないこともあります。

slow_query_log=1 long_query_time=3

そういうときは、set global すれば動的に有効にできます。

mysql> set global slow_query_log=1; mysql> set global long_query_time=3;

が、なぜか long_query_time の値が反映されません。デフォルトの 10秒のままです。

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

mysql> show variables like ‘long_query%’; +—————–+———–+ | Variable_name | Value | +—————–+———–+ | long_query_time | 10.000000 | +—————–+———–+ 1 row in set (0.00 sec) </code>

実はそれは勘違いで、グローバルシステム変数の変更は、新規のコネクションから有効になるのでした。一旦 quit してから再接続すると、反映されているのが確認できました。

mysql> show variables like 'long_query%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 3.000000 | +-----------------+----------+ 1 row in set (0.00 sec)