Mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。
一、查看当前服务器是否开启慢查询:
1、快速办法,运行sql语句:show VARIABLES like “%slow%”
mysql> show variables like 'slow%'; +---------------------+---------------+ | Variable_name | Value | +---------------------+---------------+ | slow_launch_time | 2 | | slow_query_log | ON | 注:是否打开日志记录 | slow_query_log_file | /tmp/slow.log | 注: 设置到什么位置 +---------------------+---------------+ 3 rows in set (0.00 sec)
2、直接去my.conf中查看。
二、开启慢查询功能
mysql> show variables like 'long%'; 注:这个long_query_time是用来定义慢于多少秒的才算“慢查询” +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> set global long_query_time=1; 注: 我设置了1, 也就是执行时间超过1秒的都算慢查询。 Query OK, 0 rows affected (0.00 sec) mysql> set global log_slow_queries = ON; Query OK, 0 rows affected (0.00 sec) mysql> set global slow_query_log='ON' 注:打开日志记录
一旦slow_query_log变量被设置为ON,mysql会立即开始记录。
2。 也可以在 my.conf 中的配置,要放在 [mysqld]块下方:
[mysqld] log_output=FILE log_slow_queries = ON slow_query_log = ON log_queries_not_using_indexes = ON log-slow-queries = /usr/local/mysql/var/slowquery.log long_query_time = 1 #单位是秒
慢查询日志文件的信息格式:
# Time: 130905 14:15:59 时间是2013年9月5日 14:15:59(前面部分容易看错哦,乍看以为是时间戳)
# User@Host: root[root] @ [183.239.28.174] 请求mysql服务器的客户端ip
# Query_time: 0.735883 Lock_time: 0.000078 Rows_sent: 262 Rows_examined: 262 这里表示执行用时多少秒,0.735883秒,1秒等于1000毫秒
SET timestamp=1378361759; 这目前我还不知道干嘛用的
show tables from test_db; 这个就是关键信息,指明了当时执行的是这条语句