在亚马逊云科技的RDS中支持几乎主流的数据库,对于亚马逊云中的数据库的参数设置及性能调优对于我们的日常业务的运行会很有帮助。本篇将对于Amazon RDS MySQL的参数说明及性能调优。
RDS MySQL的执行基本架构
1. 我们都知道,基础设施的潜在异常是常见的,也是不可避免的。Flamingo零售商业平台是一个全天候在线浏览交易的综合性零售业务,因此对平台的高可用性和灾备效率有很强的潜在需求。
2. 作为一个全天候的零售商业平台,全球不同地区的用户在使用平台时的延迟体验及安全性,因此网上购物和订单执行的效率将对业务的发展至关重要,因此及时分析和掌握平台的客户交互数据对于平台的优化是非常重要的。
3. 为了确保服务体系结构的整体弹性和高可用性,必须考虑成本,通过在日常能够高效的进行自动化业务迭代并且支持高效的进行业务容灾。
重点介绍下AWS RDS参数组类型
1.静态参数:静态参数需要在更改后重启 RDS 数据库实例,以便新值生效。
2.动态参数:动态参数在更改设置后不需要重启。
常见的参数:
注意:
部分动态参数由于需要重新分配资源或者完成当前事务等,所以需要重启或者等待一段时间。
AWS RDS参数说明
1.控制数据库功能和行为的参数。
2.可能影响性能的参数。
注意:
有些实例参数包含变量或公式,需结合实例类型调整。
例如:
● 业务侧发现查询很慢,应该如何入手?
1.从业务侧、RDS的事务、网络和EBS:
1.1业务侧EC2与RDS之间的网络延迟(不同AZ或Region带来的延迟)、程序内部参数配置、资源配置
1.2 RDS 拓扑结构带来的延迟(繁重的工作负载、多并发查询或长时间运行的事务等)
1.3 RDS EBS卷带入的IO延迟
2.通过CloudWatch、Enhanced Monitoring和Performance insights查看数据库相关参数指标:
2.1 CloudWatch:CPU利用率、写入IOPS、读取IOPS、写吞吐量、读吞吐量
2.2 Enhanced Monitoring:CPU total、CPU System、CPU Nice可以判断用户的工作负载,Load Avg和vCPU对比判断是否由于实例负载引起的延迟
2.3 OS process List:检查哪个进程占用了多少CPU
2.4 使用Performance insights识别实例上运行的查询和查看导致性能下降的权重事件,权重大的wait/io/file和SQL查询可能表明正在进行磁盘密集型查询,或者可能正在请求Innodb缓冲池无法满足的数据,这时可能需要调整缓冲池参数或者实例类型
从数据库检查:
1.show processlist:检查实例中进行的线程,检查查询时长、运行状态等判断是否有性能问题
2. 如:运行状态(State 列)是’Sending data’、’Copying to tmp table’、’Copying to tmp table on disk’、’Sorting result’、’Using filesort’等都是可能有性能问题的查询
3. 行级锁造成的更新相同的行查询带来的等待事件
4.查询select * from information_schema.innodb_trx\G 启动事务和事务是否在等待一个锁,以及交易正在执行的语句(如果有的话)
5. 查询INNODB_LOCKS:提供有关InnoDB 事务已请求但尚未获取的每个锁的信息,以及事务持有的阻止另一个事务的每个锁。
6. 查询INNODB_LOCK_WAITS:包含每个被阻止InnoDB 事务的一个或多个行,指示它已请求的锁以及阻止该请求的任何锁
优化路径:分析问题、排查问题、定位问题、解决问题、尝试最优解