捣蛋SQL导致实例iops 100%

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介:      一用户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日志并进行多维度分析。
目录
相关文章
|
6月前
|
SQL 存储 安全
sql server 数据库实例
SQL Server 数据库实例是指在 SQL Server 中创建的一个独立的数据库环境。每个数据库实例都拥有自己的一套完整的数据库文件、配置设置、用户和权限等,可以独立地进行管理和操作。以下是关于
|
2月前
|
SQL 数据管理 数据库
SQL语句实例教程:掌握数据查询、更新与管理的关键技巧
SQL(Structured Query Language,结构化查询语言)是数据库管理和操作的核心工具
|
5月前
|
SQL 索引
SQL DELETE 实例
【7月更文挑战第12天】SQL DELETE 实例。
51 12
|
5月前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行多条SQL语句时,使用同一个实例来运行,遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
5月前
|
SQL 索引
SQL DELETE 实例
【7月更文挑战第13天】SQL DELETE 实例。
55 6
|
5月前
|
SQL
SQL LIKE 操作符实例
【7月更文挑战第13天】SQL LIKE 操作符实例
42 5
|
6月前
|
SQL Java 数据处理
SQL游标的详细使用方法与实例
SQL游标的详细使用方法与实例
|
6月前
|
SQL 弹性计算 数据管理
数据管理DMS产品使用合集之sql server实例,已经创建了数据库,登录时提示实例已存在,该怎么处理
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
64 1
|
6月前
|
SQL Oracle 关系型数据库
若干SQL创建数据库实例
在SQL中创建数据库,各系统方法各异。MySQL和SQL Server使用`CREATE DATABASE`语句,如`CREATE DATABASE mydb;`。Oracle通常借助DBCA,但也可用复杂SQL命令,而PostgreSQL同样使用`CREATE DATABASE`。SQLite在首次连接到不存在的数据库文件时会自动创建。注意各系统中的选项如大小、编码、权限等。
|
7月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示”,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
153 0