美文网首页
5.4.5 慢查询日志

5.4.5 慢查询日志

作者: 月雨灵枫 | 来源:发表于2017-11-04 13:17 被阅读17次

      慢查询日志包含执行时间超过long_query_time秒的SQL语句,并且至少需要检查min_examined_row_limit行。long_query_time的最小值和默认值分别为0和10。该值可以指定到微妙级别。保存到文件的日志将包含微妙部分的信息,保存到表格的日志则只能保留整数部分的时间,微妙部分将忽略。
      默认情况下管理语句和未使用索引的查询不会被记录。可以通过设置log-slow_admin_statements和log_queries_not_using_indexes环境变量改变默认行为。
      获取初始锁的时间不计入执行时间。mysqld在语句执行完毕且释放了所有锁后写入日志,因此日志顺序可能与执行顺序不同。
    默认情况,慢查询日志被禁用。要明确指定最初的慢查询日志状态,使用--slow_query_log[={0|1}]。不带参数或一个值为1的参数启用日志。参数为0禁用日志。指定日志文件名使用--slow_query_log_file=file_name。指定日志目的地使用--log_output。旧有启用慢查询日志变量--log_slow_queries已不推荐使用。
      如果未指定慢查询日志文件名,默认文件名为host_name-slow.log。服务器在data目录创建该文件除非指定不同绝对路径的文件名。
      通过设置全局变量slow_query_log和slow_query_log_file在运行时禁用或启用慢查询日志,改变日志文件名。设置slow_qyuery_log为0(或OFF)禁用日志或1(或ON)启用日志。设置slow_query_log_file指定日志文件名。如果有日志文件已被打开,那么将被关闭并打开新的文件。
      当慢查询日志启用,服务器将输出写到--log-output参数或log_output系统变量指定的目的地。当启用了日志,服务器将打开日志并写入开始消息。然而,除非选择了FILE日志目标,否则不会进一步将查询记录到文件。当目标为NONE,及时启用了慢查询日志,服务器也不会写入查询。如果日志目标不包含FILE,设置日志文件名称对日志记录没有影响。
      如果使用--log-short_format选项,服务器只写少量信息到慢查询日志。
      要将缓慢的管理语句写进慢查询日志需使用--log-slow-admin-statements选项。管理语句包括ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE。
      要将不使用索引的查询写到慢查询日志,需使用log_queries_not_using_indexes系统变量。当此类查询被记录,慢查询日志的体积可能会快速增长。
      服务器控制参数按照以下顺序决定是否将查询记录到慢查询日志。
      1. 查询必须不是管理语句或者--log-slow-admin-statements参数被指定。
      2. 查询必须消耗至少long_query_time秒,或者log_queries_not_using_indexs必须被启用且查询未使用索引进行行查找。
      3. 查询必须检查至少min_examined_row_limit行。
    服务器不会将有查询缓存处理的查询写入慢查询日志,也不会记录未因索引受益的查询(由于表中只有零行或一行记录)。
      默认情况下,复制从服务器不会将复制的查询写入慢查询日志。可使用--log-slow-slave-statements选项改变这一行为。
      慢查询日志应该被保护,因为日志语句可能包含该密码。
      慢查询日志可以用来查找花费恒昌时间执行的查询,因此是优化的可选择方式。然而检查一个很长的慢查询日志可能成为意向艰巨的任务。为了简化操作,可以使用mysqldumpslow命令处理慢查询日志,以总结出现在日志中的查询。

    相关文章

      网友评论

          本文标题:5.4.5 慢查询日志

          本文链接:https://www.haomeiwen.com/subject/wkefmxtx.html