同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描述通用查询日志。 1、MySQL日志文件系统的组成 2、慢查询日志 3、慢查询日志演示 long_query_time : 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s slow_query_log : 指定是否开启慢查询日志 log_slow_queries : 指定是否开启慢查询日志(该参数要被slow_query_log取代,做兼容性保留) slow_query_log_file : 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log min_examined_row_limit:查询检查返回少于该参数指定行的SQL不被记录到慢查询日志 log_queries_not_using_indexes: 不使用索引的慢查询日志是否记录到索引 --当前版本 root@localhost[(none)]> show variables like 'version'; +---------------+------------+ | Variable_name | Value | +---------------+------------+ | version | 5.5.39-log | +---------------+------------+ root@localhost[(none)]> show variables like '%slow%'; +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /var/lib/mysql/suse11b-slow.log | +---------------------+---------------------------------+ root@localhost[tempdb]> set global log_slow_queries=1; Query OK, 0 rows affected, 1 warning (0.00 sec) root@localhost[(none)]> show warnings; +---------+------+-------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------------------------------------------------------------------------------+ | Warning | 1287 | '@@log_slow_queries' is deprecated and will be removed in a future release. Please use '@@slow_query_log' instead | +---------+------+-------------------------------------------------------------------------------------------------------------------+ --从下面的查询中可知,2个系统变量log_slow_queries,slow_query_log同时被置为on root@localhost[(none)]>show variables like '%slow%'; +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/suse11b-slow.log | +---------------------+---------------------------------+ root@localhost[tempdb]> show variables like '%long_query_time%'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ --为便于演示,我们将全局和session级别long_query_time设置为1 root@localhost[tempdb]> set global long_query_time=1; Query OK, 0 rows affected (0.00 sec) root@localhost[tempdb]> set session long_query_time=1; Query OK, 0 rows affected (0.00 sec) --Author : Leshami --Blog : http://blog.csdn.net/leshami root@localhost[tempdb]> create table tb_slow as select * from information_schema.columns; Query OK, 829 rows affected (0.10 sec) Records: 829 Duplicates: 0 Warnings: 0 root@localhost[tempdb]> insert into tb_slow select * from tb_slow; Query OK, 829 rows affected (0.05 sec) Records: 829 Duplicates: 0 Warnings: 0 .....为便于演示,我们插入一些数据