- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。
在 MySQL 中,启用慢查询日志是找出性能瓶颈并进行优化的一个重要手段。通过记录执行时间超过设定阈值的查询,帮助你及时发现和优化这些慢查询。
启用慢查询日志
1.编辑 MySQL 配置文件
打开 MySQL 的配置文件(通常是 my.cnf 或 my.ini,在 Linux 上一般位于 /etc/mysql/my.cnf,在 Windows 上则在 MySQL 安装目录中)。找到以下配置项并进行修改:
slow_query_log = 1
slow_query_log_file = /path/to/slow-query.log
long_query_time = 1
slow_query_log = 1:启用慢查询日志功能。
slow_query_log_file:指定慢查询日志文件的位置。
long_query_time = 1:设置慢查询的阈值为 1 秒,表示查询执行超过 1 秒的都算慢查询。
2.重启 MySQL 服务
修改配置文件后,保存并重启 MySQL 服务,使配置生效:
sudo systemctl restart mysql
分析慢查询日志
启用慢查询日志后,系统会开始记录执行时间超过 long_query_time 的查询。你可以通过查看日志来分析这些查询,找到性能瓶颈。
使用 mysqldumpslow 分析慢查询日志
mysqldumpslow 是 MySQL 提供的工具,用来分析和汇总慢查询日志。它可以根据多种标准对查询进行排序,并帮助你找出最慢或最常见的查询。
常用命令选项
-s:指定排序方式,常用的排序方式包括:
t:按时间排序(默认)。
a:按平均查询时间排序。
l:按锁定时间排序。
r:按返回行数排序。
-t:显示前 N 条慢查询。
-g:按正则表达式过滤查询语句。
-a:显示查询的完整语句。
示例命令
1.显示前 10 条按平均查询时间排序的慢查询:
mysqldumpslow -s at -t 10 /path/to/slow-query.log
-s at:按平均查询时间排序。
-t 10:显示前 10 条结果。
2.显示所有查询的完整语句,按返回行数排序:
mysqldumpslow -s r -a /path/to/slow-query.log
-s r:按返回行数排序。
-a:显示查询的完整 SQL 语句。
示例输出
当你运行 mysqldumpslow 后,输出结果会显示每个查询的相关信息,比如查询执行次数、总时间、平均时间、锁定时间、返回的行数等。例如:
Count: 123 Time=1.23s (123s) Lock=0.00s (0s) Rows=0.0 (0), user@localhost
SELECT * FROM table WHERE column = 'value'
...
Count:查询执行的次数。
Time:查询的总执行时间和平均执行时间。
Lock:查询的总锁定时间和平均锁定时间。
Rows:查询返回的总行数和平均行数。
优化慢查询
根据分析的结果,常见的优化方法包括:
1.添加索引:为查询条件中频繁使用的列添加索引。
2.重写查询语句:优化 SQL 查询,避免使用低效的操作(如全表扫描)。
3.调整数据库结构:根据查询需求,调整数据库表的结构或字段类型。
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
售前咨询
售后咨询
备案咨询
二维码
TOP