> 数据库 > MySQL >

配置记录mysql服务器的慢查询日志

mysql服务可以把超过指定规定时间的sql语句已日志的方式记录下来,检查当前mysql服务有没有记录慢查询的命令为:

/usr/local/mysql/bin/mysqladmin var | grep log_slow | tr -d "|"

如果看到log_slow_queries OFF则没有启用,启用的方法很简单,把如下配置放在mysql的配置文件my.cnf中的mysqld段里即可。

log-slow-queries	= /var/lib/mysql/slow-queries.log
long_query_time		= 1
log-queries-not-using-indexes
log-slow-admin-statements

上面的配置打开了slow query日志,将会捕获了执行时间超过了1秒的查询,包括执行速度较慢的管理命令(比如OPTIMEZE TABLE),并且记录了没有使用索引的查询。这些SQL,都会被记录到log-slow-queries指定的文件/var/lib/mysql /slow-queries.log文件中。

log-slow-queries
存放slow query日志的文件。你必须保证mysql server进程mysqld_safe进程用户对该文件有w权限。

long_query_time
如果query time超过了该值,则认为是较慢查询,并被记录下来。单位是秒。

log-queries-not-using-indexes
MySQL会将没有使用索引的查询记录到slow query日志中。无论它执行有多快,查询语句没有使用索引,都会被记录。有的时候,有些没有使用引索的查询非常快(例如扫描很小的表),但也有可能导致服务器变慢,甚至还会使用大量的磁盘空间。

log-slow-admin-statements
一些管理指令,也会被记录。比如OPTIMEZE TABLE, ALTER TABLE等等。

需要说明的是long_query_time很多地方都说最小是1秒,其实该值可以是一个浮点数,起码在mysql 5版本中可以这么配置,例如 0.1,也就是100毫秒。

(责任编辑:IT)