千家信息网

MySQL提供的一种日志记录-慢日志查询

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文主要给大家介绍MySQL提供的一种日志记录-慢日志查询,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。慢日志查询MySQL的慢
千家信息网最后更新 2025年11月08日MySQL提供的一种日志记录-慢日志查询

本文主要给大家介绍MySQL提供的一种日志记录-慢日志查询,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。

慢日志查询

MySQL的慢日志查询是MySQL提供的一种日志记录,它用了记录在MySql中响应时间超过阈值的语句,具体运行时间超过long_query_time值的SQL,则会被记录到慢日志中。long_query_time的默认时间为10,意思是运行10以上的语句。

比如一条sql执行超过5秒钟,我们就算慢SQL,MySQL会记录超过5秒的sql,我们可以结合explain进行全面分析。

默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。当然,如果不是调优需要,一般不建议启动该参数,因为慢日志会或多或少带来一定的性能影响。

是否开启以及设置
#查看是否开启
show variables like '%slow_query_log%';
#开启
set global slow_query_log = 1;

使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf。

注意设置慢查询阈值时间后,你可能看不到值发生了变化,即没有生效,这时需要重新连接或新开一个会话才能看到修改值。
show variables like '%long_query_time%'

或者不重开连接也可以使用下面的命令:
show variables like '%long_query_time%'

哪些sql会被慢日志记录,这是由参数long_query_time控制,默认情况下long_query_time的值为10秒,命令:
show variables like '%long_query_time%';

假如运行时间正好等于long_query_time的情况,并不会被记录下来。也就是说,在mysql是判断大于long_query_time,而非大于等于。

查看慢日志条数

show global status like '%slow_queries%'

日志分析工具mysqldumpslow
在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySql提供了日志分析工具mysqldumpslow。

例如:
#得到返回记录集最多的10个SQL
Mysqldumpslow -s r -t 10 D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log
#得到访问次数最多的10个SQL
Mysqldumpslow -s c -t 10 D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log
#得到按照时间排序的前10条里面含有左连接的查询
Mysqldumpslow -s t -t 10 -g "left join" D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log
#另外建议在使用这些命令时结合|和more使用,否则可能出现爆破情况
Mysqldumpslow -s r -t 10 D:\Program Files\mysql\data\DESKTOP-VN2D5OU-slow.log|more

参数含义
s: 表示按照何种方式排序
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
t:返回前面多少条的数据
g:后面搭配一个正则表达式

用show profile进行sql分析
show profile命令可以分析当前会话中语句执行的资源消耗情况。用于查找SQL耗时瓶颈 。默认处于关闭状态,并保存最近15次的运行结果。

查看是否开启(show variables like 'profiling';)
开启功能(set profiling = on;)

开启之后就可以记录接下来sql的运行情况。之后通过show profiles来查看结果:

进一步通过命令(show profile cpu, block io for query 3;)分析某个SQL语句执行情况,例如下面分析3号SQL的情况。

Show profile后面的一些参数:

All:显示所有的开销信息

Block io:显示块IO相关开销

Context switches: 上下文切换相关开销

Cpu:显示cpu相关开销

Memory:显示内存相关开销

Source:显示和source_function,source_file,source_line相关的开销信息

全局查询日志
(永远不要在生产环境开启,查看所有执行的SQL语句)
设置命令:
set global general_log = 1;
#以表的形式输出
set global log_output = 'TABLE'

此后,mysql所执行的SQL语句将会记录到mysql.genearl_log表,可用下面的命令查看:
select * from mysql.general_log;
也可以在配置文件中配置,设置如下:
#开启
General_log = 1
#记录日志文件的路径
General_log_file = D://path/logfile
#输出格式
Log_output=file

看了以上MySQL提供的一种日志记录-慢日志查询介绍,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,大家可以继续关注行业资讯板块,会定期给大家更新行业新闻和知识,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。

日志 查询 时间 分析 情况 命令 开销 语句 参数 运行 数据 文件 配置 信息 工具 建议 数据库 次数 环境 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 5g网络技术员 数据库在互联网系统重要吗 厦门网络技术三级在哪里考试 软件开发评审规定 程序员开发转行网络安全好学吗 丽水网络安全大数据余辉 山东软件开发公司名单 兴乐网络技术6 软件开发人员属于什么部门 文明6的服务器稳定么 龙岩合众网络技术有限公司 重庆玉琳雅网络技术有限公司 数据库连接池配置是什么意思 闲鱼里为什么这么多服务器电源 为什么软件开发者不收费 如何管理自己服务器不被炸服 数据库加密后置代理 杨浦区参考软件开发销售电话 江苏专业网络技术服务五星服务 ie网络安全证书阻止 香港云大服务器租金 电力网络安全十七条措施 易云游网络技术和蚂蚁 用友软件版本号数据库表 服务器线程排队 软件开发招聘广告语 链接无密码网络安全吗 网络安全法哪年出台 达芬奇恢复数据库初始化失败 智能手机客户端软件开发
0