MySQL 慢查询日志配置与简析
MySQL慢查询日志配置与简析
By:授客 QQ:1033553122
<1> 查看是否开启慢查询日志
SHOW VARIABLES LIKE 'slow%';
说明:
a. 如果slow_query_log参数值为OFF则表示没开启,如果为ON则表示开启
b. slow_query_log_file 参数值为慢查询日志存放路径与名称(5.6及以上版本)。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
<2> 查看慢查询时间阈值
说明:
long_query_time参数值,单位默认为秒。如上图,查询耗时超过long_query_time参数值(默认10s)的查询会被定义为慢查询,且记录到慢查询日志
<3>开启并配置慢查询
永久生效
找到mysql配置文件my.conf,编辑,在[mysqld]结点(如果没找到则手动新增)下新增以下语句
[myslqd]
……
slow-query-log = on
slow_query_log_file = /var/log/mysql_slow_query.log
long_query_time = 1
注意:slow_query_log_file文件所在父级目录,mysql必须具备可写权限
临时生效
SET GLOBAL slow_query_log=ON;
SET GLOBAL long_query_time = 2; 执行该命令后,SHOW VARIABLES LIKE 'long%';查看参数值还是原来的值,需要开启另一个新会话,才能看到修改后的配置。
注:以上配置重启后失效
<4> 重启mysql让配置生效
<5> 查看慢查询日志
tail -f /var/log/mysql_slow_query.log
Time Id Command Argument
# Time: 161213 14:52:10
# User@Host: testacc[testacc] @ [192.168.1.101]
# Thread_id: 2 Schema: employees QC_hit: No
# Query_time: 68.258781 Lock_time: 0.000722 Rows_sent: 5000000 Rows_examined: 5000000
use employees;
SET timestamp=1481611930;
select * from employee t1 limit 0, 5000000000;
如上,我们可看到,sql:“select * from employee t1 limit 0, 5000000000;”这条慢查询,查询耗时(Query_time)为68.258781s,执行该语句时,锁定时间(Lock_time)为0.000722秒,检索记录行数(Rows_examined):5000000条,返回记录数(Rows_sent)5000000条。
作者:授客
微信/QQ:1033553122
全国软件测试QQ交流群:7156436
Git地址:https://gitee.com/ishouke
友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
微信打赏
支付宝打赏 全国软件测试交流QQ群
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库