我该如何选择RDS?我要购买多大规格的RDS?RDS的连接数,iops指的是什么?上诉这些问题相信是每一个RDS用户在开始使用的时候都会有这样的疑问。首先我们要了解一下RDS的组成包括哪一些,从阿里云官网的购买页面中我们可以看到RDS包括了以下参数:数据库类型,版本,存储空间,规格:内存+连接数+io,地域,那我们就一个个来分析一下:
一.数据库的类型:
RDS目前支持的数据库类型有两种:mysql,sqlserver,为什么这里要特别提出来讲一讲?原因有以下两个方面:
a.由于受到sqlserver和windows license的影响,sqlserver价格会比mysql高出近50%,一个2G Mem+50GB Disk的Mysql一年的价格是:4480 RMB;一个2G Mem+50GB Disk的Sqlserver一年的价格是:6420 RMB;
b.sqlserver处于闭源状态,在出现异常疑难问题排查的时候,往往需要借助微软官方的帮助,同时RDS如果想在sqlserver上面定制出一些自己特色的功能时候,往往其封闭的协议让RDS望而退步;相对于mysql的开源而言,RDS依托了阿里强大的mysql内核开发和运维经验,能够很好的定制出一些RDS自己的特色功能,在出现疑难问题上能够迅速的进行debug排查。二.数据库的版本:
RDS mysql目前支持5.5和5.1两个版本,sqlserver支持2008一个版本,通常在高版本中会:修复掉低版本中一些bug提高系统的稳定和安全性,优化改进低版本的设计提升系统的性能,推出一些新的功能丰富提升系统的易用性。所以这里我们我们以mysql为例,看一看在5.5与5.1相比较有哪些改动:
1)默认存储引擎更改为InnoDB
2)提高性能和可扩展性
. 提高了默认线程并发数(innodb_thread_concurrency)
. 后台输入/输出线程控制(innodb_read_io_threads、innodb_write_io_threads)
. 适应性散列索引(Hash Index)控制,用户可以关闭适应性散列功能
. 插入缓冲(Insert Buffering)控制,用户可以关闭innodb的插入缓冲功能
. 恢复组提交(Restored Group Commit)
. 多个回滚段(Multiple Rollback Segments),之前的innodb版本最大能处理1023个并发处理操作,现在mysql5.5可以处理高达128K的并发事物,
. 改善了日志系统互斥和单独刷新(Flush)列表互斥
. 改善清除程序进度,在mysql5.5中清楚操作线程是独立的线程,并支持并发,可以使用innodb_purge_treads配置。
3)提高实用性
. 半同步复制(Semi-synchronous Replication)
. 复制Heartbeat
. 中继日志自动恢复(Automatic Relay Log Recovery)
4)提高易管理性和效率
. 建立快速索引(Faster Index Creation)
. 高效的数据压缩(Efficient Data Compression)
. 为大物件和可变长度列提供高效存储
. 增加了INFORMATION_SCHEMA表,新的表提供了与InnoDB压缩和事务处理锁定有关的具体信息
. 支持utf8mb4字符集
5)提高可用性
. 新的表/索引分区选项。MySQL5.5将表和索引RANG和LIST分区范围扩展到了非整数列和日期,并增加了在多个列上分区的能力。
6)改善检测和诊断
. Mysql5.5引入了一种新的性能架构(performancn_shema,P_S),用于监控mysql监控服务器运行时的性能。
有了这么多功能的改进提升,还有什么理由不使用5.5.
三.存储空间:
在RDS的工单问题中,空间问题的咨询应该可以算得上是top 5,当RDS的实际使用空间超过了购买的空间后,实例就会被锁定了,这样就会导致应用无法再写入,更新数据,造成应用的报错,在RDS的控制台中可以设定空间的报警阀值,当实例空间到达报警阀值后用户就会收到报警短信,这个时候用户则需要对判断当前的空间增长是否合理,如果合理的增长则需要对实例的进行弹性升级,如果增长不合理,则需要进行快速的判断。所以在这里我们就需要了解RDS的空间组成到底包括了哪些?
RDS的实例空间主要包括了:数据文件,日志文件,其他文件(包括系统文件,临时文件)
下面我们来详细介绍一下这些文件组成:
b.临时文件:通常可以理解为数据库做一个大的操作,由于内存不足,数据库需要将内存中的文件 写到磁盘上,这样则有可能导致临时文件写的非常大,通常出现这种情况的时候,数据库在做大 的排序操作(order by,group by),由于内存不足,需要将数据刷写到临时文件中,下图的案 例中,由于数据库中一条order by的语句频繁的执行,但是排序的sql没有索引,导致了临时文件 的频繁写操作:
Ps.RDS已经计划在idb中集成实例的空间诊断这个功能,帮助用户分析实例空间的使用,诊断问题的根源。
四.实例规格:
不同的RDS实例规格提供了不同的性能指标,可以参考RDS不同规格的测试报告。如何选择RDS的规格,由于该选项会直接关系你的应用是否在RDS上正常的运作起来,同时还关系成本的问题,所以深刻的理解这些参数,有助于你更好的使用RDS,更低成本的使用RDS。下面来分析一下RDS规格中这3个关键指标:
可以看到上面的3个核心指标都能够直接影响用户使用,下图展示了不同规格能够达到的QPS指标,该测试报告采用标准的sysbench oltp(读写混合)测试模型,可以作为每种实例规格的吞吐能力的参考,用户可以根据自己的业务压力来选择合适的实例规格:
五.地域选择:
RDS的集群主要分布在杭州和青岛两个地域,用户往往采用SLB+ECS+RDS的架构,所以保持着三者在同一个地域就可以了,杭州到青岛的网络访问延迟大概在20ms左右,所以应当避免跨地域的访问情况。
希望这篇文章对你使用RDS有帮助。