全部產品
Search
文件中心

ApsaraDB RDS:寫最佳化

更新時間:Dec 04, 2024

RDS MySQL的寫最佳化功能通過關閉執行個體的innodb_doublewrite(InnoDB雙寫機制)來提升寫入效率。本文為您介紹該功能的使用方法以及效能測試結果。

背景資訊

MySQL的InnoDB引擎採用雙寫技術確保資料頁的原子性,以防止半寫錯誤。當InnoDB需要重新整理髒頁時,首先將資料寫入雙寫緩衝區;待該緩衝區滿後,刷髒線程需等待上一批次的資料完成寫盤才能繼續。每次重新整理資料頁都涉及兩次寫操作,這增加了磁碟I/O資源的消耗。

對於寫入密集型應用,磁碟I/O常成為效能瓶頸,InnoDB雙寫機制會顯著增加磁碟頻寬負擔,進而影響執行個體整體效能。

功能簡介

開啟RDS MySQL的寫最佳化功能後,可以確保每次資料頁寫入的原子性,從而安全地關閉InnoDB雙寫機制。這不僅降低了I/O寫入量,還簡化了刷髒過程,大幅度降低執行個體寫盤的IOPS及頻寬需求,達到提升執行個體寫效能的目的。測試詳情請參見效能測試

前提條件

  • 資料庫引擎及版本:僅支援MySQL 5.7或8.0執行個體。

  • 儲存類型:僅支援ESSD雲端硬碟與通用雲端硬碟。

  • 開通階段:僅支援建立執行個體時或存量倚天版(高可用/叢集系列)執行個體開啟寫最佳化功能。

費用說明

寫最佳化功能免費,開啟和關閉寫最佳化都不會產生額外費用。

注意事項

  • 開啟和關閉寫最佳化功能時,會導致執行個體重啟,請謹慎操作。

  • 主執行個體開啟寫最佳化功能時,無法關閉唯讀執行個體的寫最佳化功能,避免因效能不一致導致複寫延遲。

  • 建立唯讀執行個體與備份恢複情境中,寫最佳化繼承原執行個體配置。

開通寫最佳化

新購執行個體時標準版執行個體寫最佳化功能預設關閉,需要手動開通。倚天版執行個體寫最佳化功能預設開通。

image

管理寫最佳化

已開通寫最佳化功能的執行個體才可以在執行個體基本資料頁管理寫最佳化。

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 基本資料頁面,單擊寫最佳化開關,開啟或關閉寫最佳化。image.png

效能測試

測試準備

  • 測試資源與方法:本次測試分別在高可用系列通用雲端硬碟執行個體的通用規格和獨享規格上執行資料寫入操作,觀察執行個體開啟寫最佳化功能前後的效能差異。

    產品系列

    儲存類型

    執行個體規格

    規格代碼

    CPU和記憶體

    高可用

    通用雲端硬碟

    通用規格

    mysql.n2.large.2c

    4核8 GB

    高可用

    通用雲端硬碟

    獨享規格

    mysql.x2.large.2c

    4核8 GB

  • 測試載入器安裝:本文以CentOS系統安裝Sysbench為例,你可以執行以下命令進行安裝,詳情請參見Sysbench官方文檔

    git clone https://github.com/akopytov/sysbench.git
    cd sysbench
    git checkout 0.5
    
    yum -y install make automake libtool pkgconfig libaio-devel
    yum -y install mariadb-devel
    
    
    ./autogen.sh
    ./configure
    make -j
    make install
     
  • 測試資料準備:300 GB資料量(30張資料表,每張表4000萬行)

    sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare

    本測試所涉及的參數說明如下。

    參數名

    描述

    tables

    表數量,以30張為例。

    table_size

    每個表的記錄行數,以4000萬行為例。

    rand-type

    隨機數分布類型,以special為例。

    rand-spec-pct

    特定隨機數分布中被視為“特殊”值的百分比,以15%為例。

    threads

    並發線程數,以64為例。

    time

    測試的期間(單位:秒),以100秒為例。

測試寫效能

在測試執行個體中執行以下命令,對比開啟和關閉寫最佳化功能的QPS效能。

sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run

測試結果

寫最佳化測試結果

  • 4核8 GB標準版高可用系列通用型RDS MySQL執行個體的測試結果如下:

    開啟寫最佳化後,QPS效能提升48%。

    image

  • 4核8 GB標準版高可用系列獨享型RDS MySQL執行個體的測試結果如下:

    開啟寫最佳化後,QPS效能提升47%。

    image

寫最佳化 + IO加速測試結果

說明

關於通用雲端硬碟IO加速功能的介紹,請參見通用雲端硬碟IO加速功能

4核8 GB標準版高可用系列通用型RDS MySQL執行個體的測試結果如下:

開啟寫最佳化後,QPS效能提升93%。image