设为首页 收藏本站
查看: 515|回复: 0

[经验分享] MySQL慢查询日志

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-30 14:13:00 | 显示全部楼层 |阅读模式
 mysql本身支持慢查询日志,可以配置SQL查询超过特定时间的查询记录到日志中。这在优化SQL查询中是非常有效的工具,能够帮助我们快速定位发生问题的SQL。

  慢查询日志常用的变量

  long_query_time : 最小值为0,默认为10毫秒,仅记录超过查询时间的SQL,最小粒度为毫秒。

  min_examined_row_limit : 执行查询时扫描过的行数。

  slow_query_log_file : 慢查询日志文件名称

  log-output : 慢查询日志存放路径

  log_queries_not_using_indexes : 不使用索引的查询记录到慢查询日志  

  log_slow_slave_statements : 将集群中的慢查询日志记录到主节点主机慢查询日志中。

   详解慢查询日志的使用


  将日志记录到文件时,最小时间粒度可以为毫秒。但是将日志记录到数据库中的表时,只能记录到整型的秒。所以,慢查询日志多数记录在文件中。

  mysql并不将初始锁定SQL时间当作执行时间,mysqld只有在sql执行完毕,并且释放了所有的锁后,才会将日志写进文件。因此,日志中记录的顺序可能与应用程序实际执行的时间不同。

  默认情况下,慢查询日志是不启用的,所以很多人从来不知道这个玩意。若启用慢查询日志,需要在启动mysql时指定 --slow_query_log[={0|1}]. 如果没有参数或者参数为1,就启用了慢查询日志。当然参数为0的话,就会禁用慢查询日志。指定日志文件名称的话,使用 --slow_query_log_file=file_name。指定日志文件路径的话,使用 --log-output=output_file_name

  如果没有为慢查询日志指定文件名的话,默认名字是 host_name-slow.log。如果不为日志指定目录的话,这个日志会存放在数据目录下。

  有一点需要的是,如果不为慢查询日志文件找不到目录或者目录不存在的话,即便启用了慢查询日志,也不会记录到慢查询日志文件中。所以,切记指定的慢查询日志目录是一个已经存在的目录。

  如果想要慢查询日志少记点内容的话,可以使用 --log-short-format选项。

  如果想要将管理行为也记录到慢查询日志中,可以使用log_slow_admin_statements变量。它会记录下修改数据表,分析数据表,检查数据表,创建索引,删除索引以及修复数据表等行为。

  如果要在慢查询日志中记录下没有使用索引的查询,可以使用log_queries_not_using_indexes变量。当然这么做,会导致系统的日志增加的特别快。我们可以使用log_throttle_queries_not_using_indexes变量限制记录查询的频率。这个变量的默认值是0,即无限制记录。我们最好设置一个整数如60,只需记录每分钟不使用索引查询的次数即可。

  最后,从数据库缓存中查询的记录不会记录到慢查询日志中。如果一个表没有数据的话,也不会记录到慢查询日志中。集群中的主节点不会将重复的内容记录到慢查询日志中,除非启用 log_slow_slave_statements。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-158475-1-1.html 上篇帖子: Mysql的主从复制的读写分离之Amoeba实现 下篇帖子: MySQL 执行SQL脚本 报ERROR 1231 (42000)的解放办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表