本文詳細介紹了PolarDB-X(引擎版本MySQL 5.7和MySQL 8.0)的Sysbench測試設計、測試過程和測試結果。
背景資訊
Sysbench是一款開源的、模組化的、跨平台的多線程效能測試工具,可以執行資料庫在CPU、記憶體、線程、IO等方面的效能測試。本文將驗證PolarDB-X在Sysbench多種情境中的效能表現。
測試設計
測試資料量
Sysbench資料包含16張表,每張表1千萬的資料量。
測試所用執行個體規格
節點規格
節點數
4C32G
2
4C32G
4
8C64G
2
8C64G
4
測試所用壓力機規格
ecs.g7ne.8xlarge(32 vCPU,128 GB記憶體)
測試方法
準備壓力機ECS
需準備一個ECS(建議配置為32 vCPU 128 GB記憶體,避免在測試高規格叢集時,壓力機成為瓶頸),後續操作步驟中涉及的資料準備、運行壓測等使用的都是這台ECS機器。
說明請將測試所用ECS部署在VPC網路內。請記住該VPC的名稱和ID,後續的所有執行個體都將部署在該VPC內。
準備壓測所用PolarDB-X執行個體
調整執行個體參數
說明為了在壓測情境下達到最佳效能,需要調整部分PolarDB-X計算層執行個體參數。
修改參數ENABLE_COROUTINE的值為true,XPROTO_MAX_DN_CONCURRENT和XPROTO_MAX_DN_WAIT_CONNECTION的值為4000,詳細操作步驟請參見參數設定。
通過命令列串連到PolarDB-X執行個體,在同一會話內執行如下SQL語句,關閉日誌記錄與CPU採樣統計:
set global RECORD_SQL=false; set global MPP_METRIC_LEVEL=0; set global ENABLE_CPU_PROFILE=false; set global ENABLE_TRANS_LOG=false;
準備壓測資料
下載Sysbench壓測工具包sysbench.tar.gz,並解壓。
tar xzvf sysbench.tar.gz cd sysbench/安裝編譯所需依賴庫:
yum -y install make automake libtool pkgconfig libaio-devel mysql-devel ./autogen.sh ./configure make -j make install執行命令
sysbench --version,返回sysbench 1.1.0證明壓測工具包安裝成功。也可以通過GitHub下載開源版本的Sysbench,請參見GitHub下載連結。
準備壓測配置
建立設定檔sysb.conf,將PolarDB-X串連資訊填入設定檔,其中設定檔以及主要參數的解讀如下:
mysql-host='{HOST}' mysql-port='{PORT}' mysql-user='{USER}' mysql-password='{PASSWORD}' mysql-db='sbtest' db-driver='mysql' percentile='95' histogram='on' report-interval='1' time='60' rand-type='uniform'參數說明:
percentile:回應時間採樣的百分位;
histogram:是否展示回應時間分布長條圖;
report-interval:顯示即時結果的時間間隔,單位為秒;
time:壓測時間長度,單位為秒;
rand-type:隨機數的分布模式。
匯入壓測資料
sysbench --config-file='sysb.conf' --create-table-options='single locality="balance_single_table=on"' --tables='16' --table-size='10000000' --threads='16' --auto_inc='off' oltp_point_select prepare參數說明:
config-file:指定通用設定檔;
create-table-options:指定建表模式;
tables:表的數量;
table-size:單張表的資料量;
threads:匯入時的並發數;
auto_inc:是否使用auto_increment。
執行壓測
以下列舉了Sysbench 6種不同情境測試的命令,建議首次壓測增加壓測時間長度。
說明命令涉及的相關參數說明如下:
db-ps-mode:是否開啟prepare模式;
mysql-ignore-errors:忽略如鎖衝突等原因產生的MySQL錯誤碼;
range-size:指定range查詢的範圍大小。
點查:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={並發數} oltp_point_select run唯讀:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={並發數} oltp_read_only run讀寫:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --range-size=5 --threads={並發數} oltp_read_write run按索引更新:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={並發數} oltp_update_index run非索引更新:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={並發數} oltp_update_non_index run寫入:
sysbench --config-file='sysb.conf' --db-ps-mode='disable' --mysql-ignore-errors='all' --tables='16' --table-size='10000000' --threads={並發數} oltp_write_only run
測試結果
引擎版本MySQL 5.7
版本號碼:polardb-2.4.0_5.4.19-20240610_xcluster5.4.19-20240527,詳情請參見:版本發布說明。
以下結果均以QPS作為衡量效能的標準。
點查情境結果 (point_select)

規格 | 並發 | QPS |
4C32G*2 | 1000 | 194921.53 |
4C32G*4 | 1000 | 355299.81 |
8C64G*2 | 1000 | 304538.44 |
8C64G*4 | 2000 | 618634.19 |
唯讀情境結果 (read_only)

規格 | 並發 | QPS |
4C32G*2 | 600 | 191075.61 |
4C32G*4 | 1000 | 308160.47 |
8C64G*2 | 1000 | 308352.62 |
8C64G*4 | 2000 | 598847.81 |
讀寫情境結果 (read_write)

規格 | 並發 | QPS |
4C32G*2 | 600 | 102279.28 |
4C32G*4 | 600 | 161648.89 |
8C64G*2 | 600 | 142095.41 |
8C64G*4 | 600 | 243955.73 |
按索引更新情境結果 (update_index)

規格 | 並發 | QPS |
4C32G*2 | 600 | 50092.01 |
4C32G*4 | 600 | 89559.24 |
8C64G*2 | 600 | 65857.4 |
8C64G*4 | 1000 | 130311.38 |
非索引更新情境結果 (update_non_index)

規格 | 並發 | QPS |
4C32G*2 | 400 | 50393.43 |
4C32G*4 | 1000 | 92495.24 |
8C64G*2 | 1000 | 69030.37 |
8C64G*4 | 1000 | 138283.81 |
寫入情境結果 (write_only)

規格 | 並發 | QPS |
4C32G*2 | 400 | 52322.07 |
4C32G*4 | 600 | 81170.89 |
8C64G*2 | 600 | 69120.16 |
8C64G*4 | 600 | 114337.76 |
引擎版本MySQL 8.0
版本號碼:polardb-2.4.0_5.4.19-20240610_xcluster8.4.19-20240523,詳情請參見:版本發布說明。
以下結果均以QPS作為衡量效能的標準。
點查情境結果 (point_select)

規格 | 並發 | QPS |
4C32G*2 | 1000 | 165611.83 |
4C32G*4 | 1000 | 309981.94 |
8C64G*2 | 1000 | 345505.5 |
8C64G*4 | 2000 | 618638.91 |
唯讀情境結果 (read_only)

規格 | 並發 | QPS |
4C32G*2 | 600 | 167945.12 |
4C32G*4 | 1000 | 296882.66 |
8C64G*2 | 1000 | 301085.34 |
8C64G*4 | 2000 | 534553.26 |
讀寫情境結果 (read_write)

規格 | 並發 | QPS |
4C32G*2 | 600 | 78310 |
4C32G*4 | 600 | 113646.43 |
8C64G*2 | 600 | 119788.57 |
8C64G*4 | 600 | 179227.38 |
按索引更新情境結果 (update_index)

規格 | 並發 | QPS |
4C32G*2 | 600 | 38220.55 |
4C32G*4 | 600 | 63354.87 |
8C64G*2 | 600 | 55573.63 |
8C64G*4 | 1000 | 90181.68 |
非索引更新情境結果 (update_non_index)

規格 | 並發 | QPS |
4C32G*2 | 400 | 37439.38 |
4C32G*4 | 1000 | 66362.21 |
8C64G*2 | 1000 | 63527.22 |
8C64G*4 | 1000 | 92856.59 |
寫入情境結果 (write_only)

規格 | 並發 | QPS |
4C32G*2 | 400 | 37884.63 |
4C32G*4 | 600 | 52481.99 |
8C64G*2 | 600 | 58711.55 |
8C64G*4 | 600 | 74967.45 |