详细了解MySQL慢日志查询

文 / @WordPress主题

详细了解MySQL慢日志查询

在一个大型的企业级项目中,有成千上万条SQL语句需要优化,但我们不可能逐一进行分析,这时候就需要使用慢查询日志来获取那些运行时间长、耗性能的SQL语句。

1. 慢查询日志概念

通过设置慢查询时间上限,当SQL执行的时间超过这个设定的时间,这些SQL就会被记录在慢查询日志当中。我们通过查看日志,用explain分析这些SQL的执行计划,来判定为什么效率低下,如使用是否使用到索引、索引是否创建不正确、数据量过大等问题,针对性地优化。

2. 慢查询日志设置

2.1 慢查询日志相关参数

一般MySQL定义的很多的全局的开关,都是在全局变量中存储,可以使用show/set variables命令查看或设置全局变量的值。相关变量如下:

- slow_query_log:慢查询日志开关,默认值为关闭的。
- slow_query_log_file:慢查询日志的路径,默认路径为/var/lub/mysql/。
- long_query_time:记录慢查询日志的时间阈值,默认为10秒。

2.2 设置慢查询日志

打开慢查询日志开关前,可以先根据具体的业务和并发量来预估一个时间上限(如20ms、100ms)。

打开慢查询日志开关,可以使用以下命令:

SET GLOBAL slow_query_log = 'ON';

需要注意,慢查询日志是一个global的变量,将会影响当前MySQL Server上所有的session。

接下来,设置合理的、业务可以接受的慢查询时间上限,如0.1秒,可以使用以下命令:

SET GLOBAL long_query_time = 0.1;

这个值是可以根据实际情况修改的。

3. 慢查询日志优化

在设置好慢查询日志后,执行各种业务并进行压测,等待慢查询日志产生。

查看慢查询日志,找出所有执行耗时的SQL语句,然后使用explain分析这些耗时的SQL语句,从而针对性优化。

在优化时,可以通过给关键列添加索引、让SQL语句更优化等方式来提升性能。

4. showprofiles查看sql具体的运行时间

MySQL一般只显示小数点后两位的时间,但我们可以使用profiling功能来获取更详细的时间。

打开profiling开关,可以使用以下命令:

SET GLOBAL profiling = 'ON';

然后,可以查看sql具体的运行时间,使用以下命令:

SHOW profiles;

5. 总结

本文围绕MySQL慢查询日志进行了详细介绍,包括慢查询日志的概念、设置过程、优化方法及使用showprofiles查看sql具体的运行时间等内容。在实际使用中,可以根据具体情况对慢查询时间上限进行设置,并通过慢查询日志获取SQL语句的执行计划,进而优化代码,从而提高MySQL的性能。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。