Java基础、中级、高级、架构面试资料

如何开启MySQL的慢查询日志

SQL herman 3347浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

在讲到性能调优方面,我想无外乎就是3个方面:
1.硬件调优(替换有问题的硬件)
2.对数据库配置调优
3.对SQL语句进行调优

第一种通常可以让中央处理器(CPU)或磁盘速度加倍,也可以让内存增大 4 到 8 倍。主要是让资源最大化的利用。
第二种方法是对MySQL服务器(也称为mysqld)进行调优。对这个进程进行调优意味着适当地分配内存,并让mysqld了解将会承受何种类型的负载。加快磁盘运行速度不如减少所需的磁盘访问次数。确保MySQL进程正确操作就意味着它花费在服务查询上的时间要多于花费在处理后台任务(如处理临时磁盘表或打开和关闭文件)上的时间。
第三种方法是确保增删改查进行了优化。这意味着对表应用了最优的索引,查询是按照可以充分利用MySQL功能的方式来编写的。包括SQL语句的编写,索引,存储过程,函数等等的使用。
那么如何发现自己写的SQL是否高效呢?下面教你一种最重要的方法:记录慢速查询
我们可以配置mysqld将这些慢速查询记录到适当命名的慢速查询日志中。然后通过分析日志来确定哪些部分需要进一步的优化。启用慢速查询日志需要在my.cnf中做一下配置:

	[mysqld]
	log-slow-queries
	long_query_time = 3
	log-queries-not-using-indexes

这三个设置一起使用,可以记录执行时间超过3秒和没有使用索引的查询。有关log-queries-not-using-indexes的配置。我们必须使用MySQL4.1或更高版本。慢速查询日志都保存在MySQL数据目录中,名为hostname-slow.log。如果希望使用一个不同的名字或路径,可以在my.cnf中使用log-slow-queries = /new/path/to/file 实现此目的。
阅读慢速查询日志可以通过mysqldumpslow命令进行。指定日志文件的路径,就可以看到一个慢速查询的排序后的列表,并且还显示了它们在日志文件中出现的次数。一个非常有用的特性是mysqldumpslow在比较结果之前,会删除任何用户指定的数据,因此对同一个查询的不同调用被计为一次;这可以帮助找出需要工作量最多的查询。

 

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » 如何开启MySQL的慢查询日志