当前位置:网站首页>Mysql查看慢查询日志
Mysql查看慢查询日志
2022-08-02 21:51:00 【模糊化的】
我们在工作中经常会遇到执行很慢的sql语句,今天我们来看一下慢查询日志
查看通用日志
show variables like ‘%general%’;
默认通用日志是关闭的,
开启通用日志查询: set global general_log=on;
关闭通用日志查询: set global general_log=off;
查看当前慢查询日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log)
show variables like ‘%log_output%’
设置通用日志输出为表方式: set global log_output=’TABLE’;
设置通用日志输出为文件方式: set global log_output=’FILE’;
如果想永久生效,需要在my.ini中配置
general_log=1 #为1表示开启通用日志查询,值为0表示关闭通用日志查询
log_output=FILE,TABLE#设置通用日志的输出格式为文件和表
mysql慢查询日志是mysql提供记录的一种日志记录,用来记录mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time的sql值的sql则会被记录到慢查询日志中,日志可以写在表中也可以写在文件中,如果性能要求比较高的话,建议写在文件里,默认情况下MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒,通常设置为1秒),即运行10秒以上的语句是慢查询语句。
问题:如何查看当前慢查询日志的开启情况?
show variables like ‘%quer%’;
主要关注的参数:
1.slow_query_log 慢查询日志是否开启,默认为off
开启慢查询日志set global slow_query_log=‘ON’,
想要永久有效需要在my.ini中配置 slow_query_log = ON
2.slow_query_log_file的值是记录的慢查询日志到文件中(注意:默认名为主机名.log,慢查询日志是否写入指定文件中,需要指定慢查询的输出日志格式为文件,相关命令为:show variables like ‘%log_output%’;去查看输出的格式)。
(3)long_query_time指定了慢查询的阈值,即如果执行语句的时间超过该阈值则为慢查询语句,默认值为10秒。
可以在my.ini中设置指定慢查询的阈值, long_query_time = 阈值
(4)log_queries_not_using_indexes如果值设置为ON,则会记录所有没有利用索引的查询(注意:如果只是将log_queries_not_using_indexes设置为ON,而将slow_query_log设置为OFF,此时该设置也不会生效,即该设置生效的前提是slow_query_log的值设置为ON),一般在性能调优的时候会暂时开启。
过命令:show variables like ‘%log_output%’;
通通过log_output的值可以查看到输出的格式,上面的值为TABLE。当然,我们也可以设置输出的格式为文本,或者同时记录文本和数据库表中,设置的命令如下:
#慢查询日志输出到表中(即mysql.slow_log)
set globallog_output=’TABLE’;
#慢查询日志仅输出到文本中(即:slow_query_log_file指定的文件)
set global log_output=’FILE’;
设置 slow_query_log_file输出位置
setslow_query_log_file = ‘路径.log’
#慢查询日志同时输出到文本和表中
set global log_output=’FILE,TABLE’;
表格式
文件格式
可以看到,不管是表还是文件,都具体记录了:是那条语句导致慢查询(sql_text),该慢查询语句的查询时间(query_time),锁表时间(Lock_time),以及扫描过的行数(rows_examined)等信息。
那我们如何查看慢查询的个数呢?
在MySQL中有一个变量专门记录当前慢查询语句的个数:
输入命令:show global status like ‘%slow%’;
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- Flink-SQL
- 抽象工厂模式
- ML之PDP:基于titanic泰坦尼克是否获救二分类预测数据集利用PDP部分依赖图对RF随机森林和LightGBM模型实现可解释性案例
- 嗨!不来看一下如何骚气十足的登陆MySQL嘛?
- gdb调试简要总结
- 同样月薪6K,为什么同事跳槽月薪翻倍,而你只涨了1000?
- IP Protocol (Internet Protocol)
- 测试ESP32-Zigbee转发命令 : 滑轨、继电器控制
- The only way to go from a monthly salary of 10k to 30k: automated testing
- Byte's internal technical map is amazing and practical
猜你喜欢
终于明白:有了线程,为什么还要有协程?
2022-08-02 第六小组 瞒春 学习笔记
【Unity】Unity开发进阶(六)UnityEvent使用与源码解析
Finally understand: With threads, why do we need coroutines?
Software testing pen questions 1 (with answers)
Redis是如何轻松实现系统秒杀的?
如何通过 IDEA 数据库管理工具连接 TDengine?
Matplotlib drawing core principles explain (more detailed)
CS5213 chip | HDMI to VGA converter chip data sharing
刚安装完win10专业工作站版,系统变量中Path默认值有哪些?重新建一个“PATH”变量名,会覆盖掉原先的“Path”。
随机推荐
VS保存后Unity不刷新
matplotlib绘图的核心原理讲解(超详细)
Redis是如何轻松实现系统秒杀的?
双轴晶体中锥形折射的建模与应用
UDP (User Datagram Protocol)
AcWing 2983. 玩具
任务四 机器学习库Scikit-learn
How does Redis easily achieve system instant kill?
基于STM32的FLASH读写实验含代码(HAL库)
Byte's internal technical map is amazing and practical
牛客刷题:数组排序
SSM integration steps (emphasis)
Token、Redis实现单点登录
Ruoyi integrates minio to realize distributed file storage
GameStop NFT 市场分析
Kubernetes 进阶训练营 网络
软件测试到底自学还是报班?
How many ways do you know the singleton pattern?
我用这一招让团队的开发效率提升了 100%!
In-depth study TypeScript TypeScript 】 【 class (under)