- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
在 欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。
MySQL 中,慢查询日志(Slow Log)是我们优化数据库性能时非常重要的一个工具。它记录了执行时间超过指定阈值的 SQL 查询,帮助我们找出性能瓶颈,进而对查询进行优化。特别是在高负载环境中,慢查询日志能够让我们迅速定位到执行时间较长的查询,采取适当的优化措施,比如调整查询语句、添加索引等。
开启慢查询日志并不复杂,首先需要在 MySQL 的配置文件中进行如下设置:
1. slow_query_log:设置为 ON 来启用慢查询日志。
2. slow_query_log_file:指定慢查询日志的存储路径。
3. long_query_time:定义查询执行时间的阈值,只有当查询执行时间超过此值时才会被记录。
例如,在 MySQL 配置文件中添加如下内容:
[mysqld]slow_query_log = 1slow_query_log_file = /path/to/slow-query.loglong_query_time = 1
这样设置之后,执行时间超过 1 秒的查询就会被记录到指定的日志文件中。请确保根据实际情况选择适合的时间阈值。
除了基本的设置外,MySQL 还提供了一些额外的设置,用于更精细化地记录慢查询日志:
· log_slow_admin_statements:启用后,可以记录管理语句(如 ALTER TABLE、CREATE INDEX 等)。
· log_queries_not_using_indexes:开启后,所有不使用索引的查询都会被记录,无论其执行时间是否超过 long_query_time。
· min_examined_row_limit:设置记录的最小行数。低于该行数的查询不会被记录。一般情况下,建议将该值设置为 0。
慢查询日志的每条记录中包含了执行时间、锁定时间、发送行数、检查行数等信息。以下是慢查询日志中常见的字段:
· Query_time:查询的执行时间,单位为秒。
· Lock_time:获取锁的时间,单位为秒。
· Rows_sent:发送给客户端的行数。
· Rows_examined:MySQL 在执行查询时检查的行数。
从 MySQL 8.0.14 开始,慢查询日志输出增加了一些额外的字段,能够提供更多的细节信息,如下所示:
· Thread_id:语句执行的线程 ID。
· Errno:执行查询时的错误号。
· Killed:如果查询被终止,则会显示错误号指示的原因,正常终止则为 0。
· Start:查询开始执行的时间。
· End:查询执行完成的时间。
通过这些信息,我们可以更加精确地分析慢查询,找到执行时间长的原因,并进行针对性的优化。
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
售前咨询
售后咨询
备案咨询
二维码
TOP