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雲端硬碟與通用雲端硬碟。
開通階段:僅支援建立執行個體時或存量倚天版(高可用/叢集系列)執行個體開啟寫最佳化功能。
費用說明
寫最佳化功能免費,開啟和關閉寫最佳化都不會產生額外費用。
注意事項
開啟和關閉寫最佳化功能時,會導致執行個體重啟,請謹慎操作。
主執行個體開啟寫最佳化功能時,無法關閉唯讀執行個體的寫最佳化功能,避免因效能不一致導致複寫延遲。
建立唯讀執行個體與備份恢複情境中,寫最佳化繼承原執行個體配置。
開通寫最佳化
新購執行個體時標準版執行個體寫最佳化功能預設關閉,需要手動開通。倚天版執行個體寫最佳化功能預設開通。
管理寫最佳化
已開通寫最佳化功能的執行個體才可以在執行個體基本資料頁管理寫最佳化。
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在基本資料頁面,單擊寫最佳化開關,開啟或關閉寫最佳化。
效能測試
測試準備
測試資源與方法:本次測試分別在高可用系列通用雲端硬碟執行個體的通用規格和獨享規格上執行資料寫入操作,觀察執行個體開啟寫最佳化功能前後的效能差異。
產品系列
儲存類型
執行個體規格
規格代碼
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%。
4核8 GB標準版高可用系列獨享型RDS MySQL執行個體的測試結果如下:
開啟寫最佳化後,QPS效能提升47%。
寫最佳化 + IO加速測試結果
關於通用雲端硬碟IO加速功能的介紹,請參見通用雲端硬碟IO加速功能。
4核8 GB標準版高可用系列通用型RDS MySQL執行個體的測試結果如下:
開啟寫最佳化後,QPS效能提升93%。