暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云数据库:使用Amazon Performance Insights分析RDS性能问题

1392

编者按:

本文作者系晓亮,专注于数据库,大数据,公有云等领域。先后任职于Oracle,Tencent,AWS。个人主页:https://blog.51cto.com/hsbxxl,经其本人授权发布。

【免责声明】本公众号文章仅代表个人观点,与任何公司无关。

编辑|SQL和数据库技术(ID:SQLplusDB)

由于没有类似Oracle AWR等诊断报告和工具,MySQL性能调优一直是很头疼的问题,尤其是历史性能问题。有一个好的诊断工具,会在问题分析上,事半功倍。

本文介绍一下AWS RDS的辅助工具Performance Insight。当然,PI只是针对AWS RDS服务有效。

 Performance Insight官方文档链接:

    https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.html

    如何启用PI:

       https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_PerfInsights.Enabling.html

      1. 启用Perf Insights

      PI并不是一个独立存在的功能,是内嵌到RDS的一个功能,需要仔细寻找,才能发现。尤其是在中文console的模式下。注意:很多db.t2,db.t3 实例类型是不支持PI的,测试目的使用,也建议使用非T系列机型

                                            

      2. 往下翻,翻到这里

      3. 中文版界面:

      4. 在导航窗格中,选择 Performance Insights。

      选择一个数据库实例。将为该数据库实例显示 Performance Insights 控制面板

       

      5. Client正通过sysbench,插入测试数据。可以看到PI正在记录性能数据

      6. 每一条SQL都可以点开,查看细节

      7. PI等待事件列表:

        https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html#AuroraMySQL.Reference.Waitevents

        8. 其他类型数据库等待事件

          · 有关所有 MariaDB 和 MySQL 等待事件的信息,请参阅 MySQL 文档中的 等待事件摘要表。
          https://dev.mysql.com/doc/refman/5.7/en/wait-summary-tables.html

          · 有关所有 PostgreSQL 等待事件的信息,请参阅 PostgreSQL 文档中的 PostgreSQL 等待事件。
          https://www.postgresql.org/docs/10/static/monitoring-stats.html#WAIT-EVENT-TABLE

          ·有关所有 Oracle 等待事件的信息,请参阅 Oracle 文档中的 等待事件说明。
          https://docs.oracle.com/database/121/REFRN/GUID-2FDDFAA4-24D0-4B80-A157-A907AF5C68E2.htm#REFRN-GUID-2FDDFAA4-24D0-4B80-A157-A907AF5C68E2

          · 有关所有 SQL Server 等待事件的信息,请参阅 SQL Server 文档中的 等待类型。
          https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql?view=sql-server-2017#WaitTypes

          9. 如何使用PI进行性能分析,官方blog案例:

           

            https://aws.amazon.com/cn/blogs/china/tuning-amazon-rds-for-mysql-with-performance-insights/

            10. PI定价,如果按默认方式使用,不延长性能数据的存储,可以理解为免费使用。具体价格信息如下:

               https://aws.amazon.com/cn/rds/performance-insights/pricing/

              11. 下面是简单压测的情况下,收集的一部分信息:

              可以看到,主要压力在binlog写入比较慢。

              12. 针对上面的信息,简单调整下面参数,最大化降低IO写入的强度。

                innodb_flush_log_at_trx_commit=0
                innodb_flush_neighbors=0
                innodb_flush_sync=0
                sync_binlog=0

                13. 调完之后,可以看到,再次测试,差别不大?为啥呢?因为我测试基本是接近90%的查询。实际写入压力不大。

                14. 更多Mysql性能指标,到官网查看

                  https://dev.mysql.com/doc/refman/5.6/en/performance-schema.html

                  总结,AWR也好,Performance Insight也罢,都是信息的收集器/工具。都需要深入理解数据库的运行机制和原理。才能在众多日志中,找到你需要关注的点,来辅助性能诊断分析。

                  此外,对于数据库的运行,还有以下几点经验总结,供参考: 

                  数据库负载监控

                  在日常数据库运行中,设定一个性能baseline,在超过baseline的情况下,根据负载情况,结合cloudwatch alarm,做进一步的告警设置

                  数据库性能分析

                  在新业务上线,数据库变更,或者业务高峰期等情况下。通过PI提供的wait event/Top SQL等信息,进一步分析,调优SQL以及相关数据库性能参数。提升数据库性能。

                  不规范SQL审计

                  一些开发人员,写的某些不规范的SQL,(没有where条件,select *),会严重消耗数据库资源。类似情况,通过PI的Top SQL/host/user等指标,分析出不规范SQL的来源,并通知相关责任人员。当然也可以将性能数据发送给cloudwatch,结合kinesis stream根据一定的规则,过滤出不规范的SQL,并自动通知相关责任人

                  ——End——


                  专注于技术不限于技术!

                  用碎片化的时间,一点一滴地提高数据库技术和个人能力。

                  欢迎关注!

                  文章转载自SQL和数据库技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论