捣蛋SQL导致实例iops 100%

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:      一用户RDS每天隔一段时间就会出现IOPS 100%的问题,求助到阿里云,排查思路: (1).慢SQL问题:通过优化索引,子查询,隐士转换,分页改写等优化; (2).DDL:create index,optimze table,alter table add colum
一用户RDS每天隔一段时间就会出现IOPS 100%的问题,求助到阿里云:
screenshot
排查思路:
      (1).慢SQL问题:通过优化索引,子查询,隐士转换,分页改写等优化;
      (2).DDL:create index,optimze table,alter table add column,create as select ;
一.慢SQL
      根据以上的排查思路我们首先去定位在IOPS高的时间段慢SQL,通过排查发现慢日志中根本就没有明显的慢日志出现,数据库慢日志设置的时间阀值是1秒,难道是我们的阀值太大了吗?不对,IOPS张高期间数据库的QPS并没有明显增加,所以看来并不是慢日志的问题。

screenshot
二.DDL
     慢日志中没有发现线索,那么是不是DDL导致的,用户有定时的DDL任务或者create as select的操作,这个可以通过审计日志进行排查跟踪,结果还没有发现问题所在,高峰期间并没有DDL操作。
三.审计日志
     经过上面两步骤的排查并没有结果,所以这个时候只能排查一些IOPS高峰期间的所有SQL了,这是没有的办法的办法。把出问题时间段的SQL审计日志拉出来进行分析,结果让人很惊喜:
screenshot

我们发现有三条SQL执行时间超过了900秒,同时扫描的行数也超过了3kw,很明显iops高的原因就是这三条SQL在捣蛋:
mysql> explain  SELECT * FROM user   WHERE  id != 6088883 AND  name like '34218864'  OR id =34218864 LIMIT 0, 1 ;
+----+-------------+---------+-------+-------------------------------+---------+---------+------+----------+-------------+
| id | select_type | table   | type  | possible_keys                 | key     | key_len | ref  | rows     | Extra       |
+----+-------------+---------+-------+-------------------------------+---------+---------+------+----------+-------------+
|  1 | SIMPLE      | wn_user | range | PRIMARY | PRIMARY | 4       | NULL | 34234220 | Using where |
+----+-------------+---------+-------+-------------------------------+---------+---------+------+----------+-------------
可以看到上面捣蛋SQL的执行计划与审计日志中的check_rows相同,所以通知用户将该SQL下线掉。
最后还有一个疑问,为什么慢日志里面没有记录着三条捣蛋sql,还是通过审计日志发现,这三条sql都没有执行成功,所以它是不会记录到慢日志中的。

阿里云原厂专家服务为您的数据库保驾护航:
https://www.aliyun.com/support/service/list?spm=5176.7972060.238067.77.kCaevb
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
1月前
|
SQL 关系型数据库 数据库
sql如何新建数据库实例
sql如何新建数据库实例
|
4月前
|
SQL 关系型数据库 C语言
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
45 0
|
4月前
|
SQL 关系型数据库 数据库
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
49 0
|
3月前
|
SQL 分布式计算 DataWorks
如果你在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示
如果你在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示
48 1
|
5月前
|
SQL 分布式计算 调度
在MaxCompute中,你可以通过SQL语句来查询和导出实例的运行状态和时间等信息
在MaxCompute中,你可以通过SQL语句来查询和导出实例的运行状态和时间等信息
54 5
|
6月前
|
SQL 安全 关系型数据库
渗透攻击实例-SQL注射漏洞
渗透攻击实例-SQL注射漏洞
|
10月前
|
SQL 安全 数据库
【数据库】sql2008卸载和默认实例的删除
【数据库】sql2008卸载和默认实例的删除
529 0
|
SQL
MybatisPlus的Update实现自定义Sql实例
MybatisPlus的Update实现自定义Sql实例
280 0
|
SQL 关系型数据库 MySQL
SQL实战:子查询的应用实例
SQL实战:子查询的应用实例
84 0
|
存储 SQL 负载均衡
SQL 函数 function 讲解+代码实例
SQL 函数 function 讲解+代码实例
SQL 函数 function 讲解+代码实例