自建数据库与RDS性能对比的注意事项

您可以通过测试来对比自建数据库与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