Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL高级--性能优化之慢日志查询

MySQL高级--性能优化之慢日志查询

原创
作者头像
Java学术趴
发布于 2022-11-16 05:52:31
发布于 2022-11-16 05:52:31
55700
代码可运行
举报
文章被收录于专栏:Java全栈·Java全栈·
运行总次数:0
代码可运行

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。

☠️每日毒鸡汤:一件事你犹豫去不去做,那就是该立即动身做的。

1 慢查询日志

1.1 慢查询日志定义
  • MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。
  • 具体指运行时间超过 long_query_time值的SQL,则会记录到慢查询日志中。 long_query_time的默认值为10,意思是运行10秒以上的语句。
  • 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒,我们就算慢SQL,希望能收集超过5秒的SQL,集合之前explain进行全面分析。
1.2 慢查询
  • 默认情况下,MySQL数据库是没有开启慢查询日志, 需要我们手动来设置这个参数。
  • 如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。

查看慢查询的状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like '%slow_query_log%';
复制代码

默认情况下 slow_query_name = OFF,表示慢查询日志是禁用的。

默认情况下会给一个缺省的文件host_name-slow.log,当我们指定路径之后就会覆盖这个默认的缺省文件路径

开启/关闭慢查询日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开启
set global slow_query_log = 1;
// 关闭
set global slow_query_log = 0;
复制代码

slow_query_log = NO,此时代表慢查询日志开启。

以上这种配置方式只是临时生效,如果想要永久生效,就必须修改配置文件 my.cnf(其他系统变量也是如此)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
修改my.cnf文件,在[mysqld]下增加或修改参数
slow_query_log = 1
slow_query_log_file = 慢查询日志文件存储地址
复制代码

查看等待时间阈值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like '%long_query_time%'l
复制代码

这个是由参数long_query_time控制的,默认情况下long_query_time的值为10秒。

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

设置等待时间阈值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set global long_query_time = 3;
复制代码
  • 即使我们修改了阈值之后,再次查询发现阈值没有发生变化,其实已经变化了并且已经生效了,此时需要重启MySQL服务。
  • 修改完等待阈值,如果不想重启服务器查询等待阈值,可以使用全局命令查看。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show global variables like '%long_query_time%';
复制代码

4.6 Show Profile

4.6.1 show profile定义
  • show profile提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优测量。
  • 默认情况下,参数处于关闭状态,并保存最近15次的运行结果。
4.6.2 show profile 分析步骤
  1. 是否支持,查看当前版本的MySQL是否支持show profile 功能。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like 'profiling';
复制代码

当前版本的MySQL支持show profile 功能并且是关闭状态。

  1. 开启功能,默认是关闭,使用前需要开启。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开启
set profiling = ON;
// 关闭
set profiling = OFF;
复制代码
  1. 运行SQL。

以下运行的SQL都会在show profile 中进行记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 第一个SQL
select * from whale_fall;
// 第二个SQL
select * from whale_fall;
// 第三个SQL
select sleep(4);
复制代码
  1. 查看结果。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show profiles;
复制代码
  1. 诊断SQL。

查询不同的性能参数

  • ALL :显示所有的开销信息。
  • BLOCK IO : 显示块IO相关开销。
  • CONTEXT SWITCHES : 上下文切换相关开销。
  • CPU : 显示CPU相关开销信息。
  • IPC : 显示发送和接收相关开销信息。
  • MEMORY : 显示内存相关开销信息。
  • PAGE FAULTS : 显示页面错误相关开销信息。
  • SOURCE:显示和Source_function,Source_file,Souce_line相关的开销信息。
  • SWAPS:显示交换次数相关开销信息。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show profile cpu,block io for query 3;
复制代码
  1. 日常开发需要注意的结论。

我们可以通过上述查询出来的状态分析此时SQL出现异常的原因

  • converting HEAP to MyISAM : 查询结果太大,内存都不够用了往磁盘上搬。
  • Creating tmp table : 创建临时表。
  • Copying to tmp table on disk : 把内存中临时表复制到磁盘,危险!!!
  • locked : 锁。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql中的慢查询日志
操作系统版本:CentOS Linux release 7.7.1908 (Core)
用户6715144
2019/12/17
3.6K0
mysql中的慢查询日志
MySQL慢查询日志
和大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。
端碗吹水
2020/09/23
1.5K0
MySQL慢查询日志
干货|MySQL性能优化的4个小技巧
  MySQL性能优化是一个老生常谈的问题,无论是在实际工作中还是面试中,都不可避免遇到相应的场景,下面博主就总结一些能够帮助大家解决这个问题的小技巧。
IT学习日记
2022/09/13
1.1K0
干货|MySQL性能优化的4个小技巧
MySQL优化之慢日志查询
对于SQL和索引的优化问题,我们会使用explain去分析SQL语句。但是真正的企业级项目有成千上万条SQL,我们不可能从头开始一条一条explain去分析。我们从什么地方可以获取那些运行时间长,耗性能的SQL??
终有救赎
2023/11/02
2520
MySQL优化之慢日志查询
Mysql慢日志查询
当前,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会对性能造成一定的影响,慢查询日志支持将日志记录到文件中
大忽悠爱学习
2021/11/15
1.4K0
你的哪些SQL慢?看看MySQL慢查询日志吧
在项目里面,多多少少都隐藏着一些执行比较慢的SQL, 不同的开发测试人员在平时使用的过程中多多少少都能够遇到,但是无法立马有时间去排查解决。那么如果有一个文件能够将这些使用过程中比较慢的SQL记录下来,定期去分析排查,那该多美好啊。这种情况MySQL也替我们想到了,它提供了SQL慢查询的日志,本文就分享下如何使用吧。
闻说社
2023/02/22
7000
MySQL性能优化(四)-慢查询
它能记录下所有执行超过longquerytime时间的SQL语句,帮我们找到执行慢的SQL,方便我们对这些SQL进行优化。
码农小胖哥
2019/12/10
9430
MySQL性能优化(四)-慢查询
性能分析之MySQL慢查询日志分析(慢查询日志)
MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。
小明爱吃火锅
2023/09/30
1.3K0
MYSQL高级篇-----查询截取分析,锁机制,主从复制
3、show Profile查询SQL在MySQL数据库中的执行细节和生命周期情况。
默 语
2024/11/20
2670
MYSQL高级篇-----查询截取分析,锁机制,主从复制
图文结合带你搞懂MySQL日志之Slow Query Log(慢查询日志)
MySQL 的慢查询日志,用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。long_query_time 的默认值为10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。
GreatSQL社区
2023/02/22
4.3K0
Mysql性能优化之开启Mysql慢查询日志
查看当前服务器是否开启慢查询: 1、快速办法,运行sql语句show VARIABLES like "%slow%" 2、直接去my.conf中查看。 my.conf中的配置(放在[mysqld]下的下方加入) [mysqld] log-slow-queries = /data/mysql/10-9-138-42-slow.log long_query_time = 1 #单位是秒 log-queries-not-using-indexes 使用sql语句来修改:不能按照my.conf中的项来修改的。修
思梦php
2018/03/09
1K0
Mysql性能优化之开启Mysql慢查询日志
高性能MySQL(二):服务器性能剖析
在他们的技术咨询生涯中,最常碰到的三个性能相关的服务请求是:如何确认服务器是否达到了性能最佳的状态、找出某条语句为什么执行不够快,以及诊断被用户描述成“停顿”、“堆积”或“卡死”的某些间歇性疑难杂症。
看、未来
2021/09/18
8380
MySQL慢查询日志
MySQL 的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应时间超过阀值的语句。
万能青年
2019/09/25
1.4K0
MySQL慢查询日志
MySQL慢查询日志总结
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过longquerytime值的SQL,则会被记录到慢查询日志中。longquerytime的默认值为10,意思是运行10S以上的语句。
lyb-geek
2018/12/28
2.1K0
MySQL慢查询日志总结
Mysql慢查询_mysql并发查询慢
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
全栈程序员站长
2022/11/07
20K0
Mysql慢查询_mysql并发查询慢
MySQL-获取有性能问题SQL的方法_慢查询 & 实时获取
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
小小工匠
2021/08/17
7590
【MySQL高级】MySQL的优化
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是
陶然同学
2023/02/24
1.2K0
【MySQL高级】MySQL的优化
mysql 慢查询,你操作的对吗?
MySQL 慢查询,全称 慢查询日志 ,它是 MySQL 提供的一种日志记录,用了记录在 MySQL 中响应时间超过阈值的语句。
八点半的Bruce、D
2020/06/09
8110
MySQL优化--查询分析工具以及各种锁
该语法可以理解为:将主查询的数据,放到子查询中做条件验证,根据验证结果(TRUE或FALSE)来决定主查询的数据结果是否得以保留。
shimeath
2020/08/11
7390
【黄啊码】MySQL入门—15、技术老大:写的SQL性能这么差,还好意思说自己五年开发经验?
大家好!我是黄啊码,MySQL的入门篇已经讲到第14个课程了,今天我们继续讲讲大白篇系列——数据库服务器优化流程
黄啊码
2022/11/01
5190
【黄啊码】MySQL入门—15、技术老大:写的SQL性能这么差,还好意思说自己五年开发经验?
相关推荐
mysql中的慢查询日志
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验