ITPub博客

首页 > 数据库 > 数据库开发技术 > 云数据库:使用Amazon Performance Insights分析RDS性能问题

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

原创 数据库开发技术 作者:lukeunique 时间:2022-04-18 07:05:00 0 删除 编辑

编者按:

本文作者系晓亮,专注于数据库,大数据,公有云等领域。先后任职于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=0innodb_flush_neighbors=0innodb_flush_sync=0sync_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和数据库技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-07-21

  • 博文量
    107
  • 访问量
    63572