CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: CloudDBA核心功能是优化数据库性能,本文通过两个案例介绍利用诊断报告的TOP SQL语句找出数据库问题根源
    云数据库CloudDBA诊断报告的TOP SQL优化是非常实用的功能,我们可以通过TOP SQL去诊断数据库中各种问题,比如性能出现下降,数据库压力出现波动,下面介绍两个线上生产案例。

    一. 利用CloudDBA TOP SQL找出数据库规格升级而性能下降的元凶

    最近在协助用户进行系统重构,RDS测试选型自然成为了本项目的一个重点,但是用户在测试不同规格的时候发现大规格的实例性能居然不如小规格,4C32G规格性能比8C64G规格高出10%,其性能监控也是非常的正常,4C32G规格是8C64G规格资源消耗的一半,TPS也是相当,那问题到底出现在那里?

    CPU消耗对比:
CloudDBA TOP SQL优化性能1
CloudDBA TOP SQL优化性能2

    TPS监控:
CloudDBA TOP SQL优化性能3
  CloudDBA TOP SQL优化性能4

    从监控上没有看出端倪后,我们怀疑用户的业务测试模型可能不一致,所以采取分析SQL审计日志来分析问题,把top sql拿出来对比就可以一目了然问题的所在,所以重新开启压测,使用我们的CloudDBA来分析SQL日志,结果让人大吃所惊,一条truncate 语句映入眼:

    8C64G规格:
CloudDBA TOP SQL优化性能5

    4C32G规格:
CloudDBA TOP SQL优化性能6

    可以看到truncate 语句在8C64G的规格中执行慢了30秒左右,这个时间恰好是整个测试相差的时间,为什么规格越大反而DDL truncate越慢?这是因为DDL语句在执行的过程中会去扫描内存中的脏页,所以内存越大脏页越多,DDL的执行时间则会越长,所以问题得以水落石出,我们可以调整数据库内存的脏页比例来缓解DDL过慢的问题。在这次问题排查中使用了很重要的SQL审计日志来发现两个实例规格的性能差异,在成千上万的SQL日志中,TOP SQL功能将所有的SQL进行收集分析,按照各种维度进行统计,帮助管理者很方便的找到问题根源所在。

    二.利用CloudDBA TOP SQL找出数据库QPS抖动的根源

    问题表现:
客户的数据库每隔半个小时出现压力抖动,需要查明什么原因引起。
CloudDBA TOP SQL优化性能7
CloudDBA TOP SQL优化性能8

    从上图可以看到该数据库的cpu压力出现来定时的抖动,查看数据库的缓存请求次数也是有定时的抖动。在这种情况下,由于数据的压力是定时出现的,所以可以在下一个定时时间点,通过show processlist进行查看数据库中有什么SQL在运行,但是这些SQL都运行非常快,根本看不到是什么SQL。这个时候需要分析审计日志,审计日志中包括来所有的SQL,所以选择某个高峰时间段的诊断报告:选择7:00~7:05和7:10~7:15两个时间段发现抖动的SQL。

    高峰时间段7:00~7:05
CloudDBA TOP SQL优化性能9

    高峰后时间段:7:10~7:15
CloudDBA TOP SQL优化性能10

    通过审计日中中TOP SQL按照执行次数最多的排序,我们可以清楚的发现出现抖动的SQL执行次数从99159次降低到25331次,最终定位该SQL是某个定时任务调用导致。


    总结

    阿里云CloudDBA诊断报告TOP SQL功能将数据库审计日志按照各种统计维度,包括执行次数,执行时间,扫描行数进行汇总排序,清晰明了的将数据库的压力进行分解,帮助系统管理员简单方便的排查数据库的各种问题。

    您可能还喜欢:

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
27天前
|
SQL 存储 关系型数据库
一文搞懂SQL优化——如何高效添加数据
**SQL优化关键点:** 1. **批量插入**提高效率,一次性建议不超过500条。 2. **手动事务**减少开销,多条插入语句用一个事务。 3. **主键顺序插入**避免页分裂,提升性能。 4. **使用`LOAD DATA INFILE`**大批量导入快速。 5. **避免主键乱序**,减少不必要的磁盘操作。 6. **选择合适主键类型**,避免UUID或长主键导致的性能问题。 7. **避免主键修改**,保持索引稳定。 这些技巧能优化数据库操作,提升系统性能。
226 4
一文搞懂SQL优化——如何高效添加数据
|
29天前
|
Cloud Native OLAP OLTP
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
126 4
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
23天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
2天前
|
缓存 关系型数据库 MySQL
MySQL数据库优化技巧:提升性能的关键策略
索引是提高查询效率的关键。根据查询频率和条件,创建合适的索引能够加快查询速度。但要注意,过多的索引可能会增加写操作的开销,因此需要权衡。
|
3天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
18 0
|
4天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
10天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
12天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
38 3
|
24天前
|
缓存 监控 数据库
优化数据库查询性能的八大技巧
在今天的互联网时代,数据库是许多应用程序的核心组件之一。优化数据库查询性能是提升应用程序整体性能的关键。本文介绍了八种有效的技巧,帮助开发人员提高数据库查询性能,从而提升应用程序的响应速度和用户体验。