您可以通過測試來對比自建數據庫與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