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

    云数据库CloudDBA诊断报告的TOP SQL优化是非常实用的功能,我们可以通过TOP SQL去诊断数据库中各种问题,比如性能出现下降,数据库压力出现波动,下面介绍两个线上生产案例。

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

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

    CPU消耗对比:
CloudDBA最佳实践-TOP SQL优化分析数据库性能问题
CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

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

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

    8C64G规格:
CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

    4C32G规格:
CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

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

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

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

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

    高峰时间段7:00~7:05
CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

    高峰后时间段:7:10~7:15
CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

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


    总结

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

    您可能还喜欢: