您可以通过测试来对比自建数据库与RDS的性能差异,但是对比时需要保证二者具有相同的条件,如相同的网络环境、性能规格、数据库版本等。本文介绍具体的注意事项。
您可以自行搭建数据库,或者购买阿里云RDS实例。推荐您购买RDS实例,因为它完全由阿里云托管,而且有完备的安全、备份、恢复、扩容、性能优化等机制,您无需执行各种安全措施(如搭建备库)和维护工作,只需专注于业务的发展和创新。
关于自建数据库与RDS的各方面对比,请参见RDS与自建数据库对比优势。
网络环境
应用和自建数据库都需要部署于ECS实例,且与RDS实例位于同一地域,使得应用与RDS之间,以及应用与自建数据库之间都是通过内网进行通信。
说明应用与自建数据库需要部署于两台不同的ECS实例。如果部署于同一台ECS实例,则应用到自建数据库的网络路径短于应用到RDS的网络路径,而且应用对CPU资源的占用也会影响自建数据库的性能表现,对比测试将不公平。
您可以采用以下其中一种部署架构:
应用、自建数据库和RDS实例的主节点位于同一个可用区。
自建数据库与RDS实例的主节点位于同一个可用区。应用位于同一地域下的另一个可用区。
性能规格
自建数据库所在ECS实例和RDS拥有相同的CPU核数与内存。
数据库版本
自建数据库和RDS的数据库版本相同,例如,两者都为MySQL 5.6。
数据复制方式
主备节点之间的数据复制方式分为异步、半同步和强同步。关于数据复制方式的介绍,请参见数据复制方式。
具体要求如下表所示。
自建数据库 | RDS |
无备库,不涉及数据复制方式。 | 高可用系列,且数据复制方式为异步。 |
有1个备库,且数据复制方式为异步。 | 高可用系列,且数据复制方式为异步。 |
有1个备库,且数据复制方式为半同步。 | 高可用系列,且数据复制方式为半同步。 |
数据库参数
自建数据库和RDS的参数设置需要一致。
关于如何修改RDS的参数设置,请参见修改实例参数。
出于安全考虑,RDS不支持部分参数的修改。如果某参数不一致,而RDS不支持修改,请修改自建数据库的参数。
案例分析
场景:某客户正在将本地的业务系统迁移上云,在RDS上的SQL执行时间明显要比线下自建数据库执行时间要长1倍。
原因:自建数据库与RDS的参数配置不同,如下所示:
用户本地参数配置:
join_buffer_size = 128M
read_rnd_buffer_size = 128M
tmp_table_size = 128M
RDS参数配置:
join_buffer_size = 1M
read_buffer_size = 1M
tmp_table_size =256K