CloudDBA最佳实践-TOP SQL优化分析数据库性能问题-阿里云开发者社区

开发者社区> 阿里云数据库> 正文

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

简介: 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功能将数据库审计日志按照各种统计维度,包括执行次数,执行时间,扫描行数进行汇总排序,清晰明了的将数据库的压力进行分解,帮助系统管理员简单方便的排查数据库的各种问题。

    您可能还喜欢:
历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象
CloudDBA初体验:SQL优化建议
阿里云数据库CloudDBA智慧解决数据库性能优化和问题诊断难题

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接