首页 > 其他分享 >聊聊什么是慢查、如何监控?如何排查?

聊聊什么是慢查、如何监控?如何排查?

时间:2022-12-15 13:32:55浏览次数:60  
标签:慢查 SQL long 如何 time 聊聊 MySQL query

Hi,大家好!我是白日梦。

今天我要跟你分享的话题是:“聊聊什么是慢查、如何监控?如何排查?”


使用推荐阅读,有更好的阅读体验

二、什么是慢查?

慢查,顾名思义就是很慢的查询。SQL的执行总是有一个执行时间的,通过​​long_query_time​​参数告诉MySQL,当SQL的执行时间超过该参数的指定值后就将这条SQL记录在慢查日志中。

默认的​​long_query_time​​默认值为10s

聊聊什么是慢查、如何监控?如何排查?_SQL



三、怎么调整界定慢查的时间?

设置全局慢查时间为0.2秒。

聊聊什么是慢查、如何监控?如何排查?_SQL_02

注意:long_query_time属于dynamic类型的参数。意思是像上面这样在会话A中通过命令行的方式设置全局 long_query_time为0.2秒后,再打开一个新的会话B查看该变量会发现 long_query_time=0.2

但是在会话A中查看session级别的long_query_time依然为默认的10s



四、慢查日志像binlog那样是真实的日志文件吗?

在MySQL5.1之前确实慢查日志确实是以文件的形式存在。但是MySQL5.1之后MySQL允许我们可以将慢查日志放入一个数据表中,便于我们查看分析。

聊聊什么是慢查、如何监控?如何排查?_SQL_03

现在公司使用的一般都是5.6~5.7版本。当然即使5.1版本之后支持了将数据放入Table中,默认配置依然是File。

当然你也可以通过下面的命令将慢查输出类型改成Table

聊聊什么是慢查、如何监控?如何排查?_MySQL_04



五、慢查有什么危害?

研发同学都知道:对于Linux操作系统来说,一个进程能打开的Socket文件句柄是上限的。即使我们可以动态的调整它的大小,但是也做不到无限大。

通过命令: 查看进程被限制的使用各种资源的量

Copyulimit -a 

core file size: 进程崩溃是转储文件大小限制
man loaded memort 最大锁定内存大小
open file 能打开的文件句柄数

大量的慢查占据MySQL连接(Linux操作系统会为每一条连接创建socket文件),慢查累积到一定程度还会导致正常的SQL得不到连接执行从而变成慢查SQL,最终有可能导致MySQL的连接全部被耗光而夯死。这就是生产级别的事故了。



六、如何监控慢查?

查看曾经执行完成的慢查

如果你需要编写一个监控程序探测MySQL的慢查询。那完全可以探测分析MySQL的slow.log

如果你还不知道slow.log在哪里,可以像下面这样定位到它。slow.log中记录的就是曾经执行过的慢查信息。

聊聊什么是慢查、如何监控?如何排查?_数据库_05

这是你可以尝试使用​​select sleep(2);​​模拟一条慢查SQL

然后去慢查sql中查看具体的慢查详情。

聊聊什么是慢查、如何监控?如何排查?_MySQL_06

查看正在进行的慢查SQL

我在A Session中发起SQL,select sleep(60);

然后在B Session中通过下图的方式可以看到当前正在进行的慢查情况。大家在看的时候注意:Command的类型为Query

聊聊什么是慢查、如何监控?如何排查?_SQL_07

MySQL也为用户提供了一些原生的慢查工具。比如:查看执行时间最长的10条SQL

mysqldumpslow -s a1 -n 10 mysql.slow_log

了解即可



七、线上出慢查了如何处理?

首先你得知道通常情况下每个公司都有自己监控系统,或者是监控脚本,具体的监控逻辑就是上节讲述的思路。故一旦出现报警,DBA同学会在第一时间接到消息。

DBA同学一般都会去联系业务同学,由业务同学去处理这个慢查。(相信已经工作的同学深有这个体会)
(更多内容欢迎关注白日梦的公众号阅读)

关注我看更多内容,每早推送,可以在地铁、班车上、上班前阅读! ......

查看MySQL专题110篇文章大纲:​​https://mp.weixin.qq.com/s/HTw-Z-SyprYA8bCBZ4NpGQ​


参考:​​https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html​


聊聊什么是慢查、如何监控?如何排查?_SQL_08


标签:慢查,SQL,long,如何,time,聊聊,MySQL,query
From: https://blog.51cto.com/u_15311508/5939340

相关文章

  • 新建了一个页面,如论如何也访问不了
    今天新建了一个页面,无论如何也访问不到。于是在router中写了redirect。然后发现竟然是我的路径填写错误。默认成了hashmode,带#的方式。修改mode为history ......
  • 【Linux】之如何卸载干净zabbix服务
    1、停止zabbix-serverzabbix-agenthttpdrh-php72-php-fpmsystemctlstopzabbix-serverzabbix-agenthttpdrh-php72-php-fpm 2、卸载zabbix服务2.1、查找zabbix......
  • 如何快速理解信号与槽?
    一、信号与槽的定义(一)定义信号(Signal)和槽((Slot)是Qt中的核心机制,也是在PyQt编程中对象之间进行通信的机制。在Qt中,每一个QObject对象和PyQt中所有继承自QWidget的控件(......
  • c#中如何实现office、文本、html、图片和pdf互转?
    c#中实现文档互转,支持Word、Excel和Pdf互转,还支持Pdf转Txt、Html、图片。对标的是迅捷的Pdf文件转换器这个软件。老实说,这个软件很强大,但也很讨厌。动不动就要交钱,于是自己......
  • [WPF] MediaElement播放HDR视频泛黄、颜色显示不正确应该如何解决?
    当我们在使用MediaElement控件播放HDR视频时会遇到颜色发灰、泛黄的情况,难道是因为控件做的有问题?其实并不是程序问题,只是我们普通的应用程序工作在8bit色深的环境中,而HDR......
  • 如何把自定义的函数,记录到你的Airtest报告里
    1.前言熟悉Airtest的同学都知道,像touch、swipe这类核心API,运行之后,都会在Airtest报告里记录一个步骤:但有很多情况下,我们可能会使用自定义的函数,这种自定义的函数,就不会......
  • 如何用 30s 给面试官讲清楚跳表
    查找假设有如下这样一个有序链表:想要查找24、43、59,按照顺序遍历,分别需要比较的次数为2、4、6目前查找的时间复杂度是O(N),如何提高查找效率?很容易想到二分查找,将查......
  • 如何解决ConcurrentModificationException的异常!
    一.前言在使用使用ArrayList的subList的时候,发生了ConcurrentModificationException的异常。接下来看看如何处理二.异常场景2.1 代码如下下面是产生异常的代码。pu......
  • 如何快速拥有好的测试idea
    如果接手任意一个测试任务,如何开始测试以及怎么快速的形成测试点呢?其实也是有一套小套路的。大概整理了下,可以从6个方面来考虑入手。1.项目快速了解项目背景、......
  • Java 如何有效地避免OOM:善于利用软引用和弱引用
    想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题......