開発している際 コンテナの mysql にどのようなクエリ走ったのか確認したいことがある。
スロークエリを 0秒に設定することで、DB にリクエストされた 全クエリを確認することができる。
mysql> show variables like 'slow%';
+---------------------+--------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/5c364d250748-slow.log |
+---------------------+--------------------------------------+
3 rows in set (0.00 sec)
mysql>
slow_query_log が OFF になっている場合、出力されない。
set global slow_query_log_file = '/tmp/mysql-slow.log';
set global long_query_time = 0;
set global slow_query_log = ON;
上記コマンドを実行し、再度確認すると、スロークエリが出力されるようになってる。
mysql> show variables like 'slow%';
+---------------------+---------------------+
| Variable_name | Value |
+---------------------+---------------------+
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /tmp/mysql-slow.log |
+---------------------+---------------------+
3 rows in set (0.00 sec)
mysql>
スロークエリが 0秒に設定されたか確認するのは
show global variables like 'long_query_time';
コマンドを実行する
mysql> show global variables like 'long_query_time';
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 0.000000 |
+-----------------+----------+
1 row in set (0.00 sec)
mysql>
結果
SET timestamp=1624328575;
INSERT INTO `xxx_transactions` (`id`,`operation`,`request`,`requested_at`,`response`,`responsed_at`,`metadata`,`status`,`failure_code`,`failure_message`,`created_by`,`created_at`) VALUES (105,'request',NULL,NULL,NULL,NULL,NULL,'succeeded',NULL,NULL,'123456789','2021-06-22 02:22:55.1492209');
無事流れたクエリを確認することができた。