Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1240155
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Mysql/postgreSQL

2013-04-11 16:01:06

2.2 慢查询日志(The Slow Query Log)

  慢查询日志指的是,所有执行时间超过long_query_time变量指定值的语句,以及达到min_examined_row_limit条记录的语句。SQL语句执行时间不包含初始化表锁的开销。SQL语句执行完毕并且完成对其锁定资源的释放后,mysqld会将符合条件的SQL语句写入慢查询日志,因此慢查询日志中语句记录和顺序有可能跟执行顺序不同(执行时间也不同)。

  long_query_time参数默认值为10,单位为秒,在5.1.21版本中,最小值为0,号称记录到文件时也能够支持到微秒,不过微秒部分会被忽略,只有整数部分会记录到表,在5.1.21版本之前,该参数值必须为整数,最小值为1。

  控制慢查询日志有下列方式:

      
  • 在5.1.6版本之前,慢查询日志是个文件,要启用慢查询日志,只需要在启动mysqld时附加--log-slow-queries[=file_name]即可;
  •   
  • 从5.1.6版本开始,慢查询日志即可以是个文件,也可以保存在中的指定表,上条说的那个参数同样好使,另外--log-output参数用来指定日志的输出目标(是文件还是表,或者两者都有);
  •   
  • 从5.1.12版本开始,另提供了--slow_query_log[={0|1}]指定是否输出慢查询日志,指定为1时表示输出,否则表示不输出。
  •   
  • 从5.1.29版本开始,另提供了--slow_query_log_file=file_name指定日志文件输出路径,而之前的--log-slow-queries则被废弃。

  如果没有为慢查询日志指定文件名,则默认文件名为host_name-slow.log,保存在目录下。

  慢查询日志可以用来查看执行时间超出指定时间的SQL语句,并针对这部分语句重点调优,不过,查看一个较大的慢查询日志极为不便,可以尝试使用mysqldumpslow命令对慢查询日志进行分析,关于mysqldumpslow命令的用法可以参考相关章节。

  在5.1版本中,当指定--log-queries-not-using-indexes参数后,可以把没有使用索引的查询记录到慢日志,而不管其执行速度。启用--log-slow-admin-statements选项可以记录一些操作语句到慢查询日志,比如OPTIMIZE TABLE、ANALYZE TABLE、ALTER TABLE。

  需要注意的是,慢查询日志中有可能记录到与用户权限或密码相关的语句,因此慢查询日志文件的保存也要注意安全。
============================================
连载:

MySQL数据库中的日志文件---(2)普通查询日志

MySQL数据库中的日志文件---(1)错误日志

阅读(1212) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~