使用sysbench測試TiDB
建議使用 Sysbench 1.0 或之后的更新版本
軟件下載地址
https://github.com/akopytov/sysbench
https://github.com/akopytov/sysbench/archive/1.0.16.tar.gz
安裝sysbench
依賴包安裝
yum -y install gcc gcc-c++ automake make libtool pkgconfig libaio-devel openssl-devel
解壓並編譯安裝sysbench
tar -zxvf 1.0.16.tar.gz
cd sysbench-1.0.16
./autogen.sh
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql --with-mysql
make -j 2 && make install
測試過程
sysbench配置
配置文件參考示例如下:
mysql-host=192.168.10.180
mysql-port=4000
mysql-user=root
mysql-password=root
mysql-db=sbtest
time=600
threads=16
report-interval=10
db-driver=mysql
數據導入
通過 MySQL 客戶端連接到TiDB Server並執行以下 SQL 語句,創建測試數據庫 sbtest
:
create database sbtest;
調整 Sysbench 腳本創建索引的順序。Sysbench 按照“建表->插入數據->創建索引”的順序導入數據。對於 TiDB 而言,該方式會花費更多的導入時間。你可以通過調整順序來加速數據的導入。
配置lua測試文件
tidb-bench/oltp_common.lua at master · pingcap/tidb-bench · GitHub
開始導入數據
config 文件為上一小節中配置的文件
sysbench --config-file=config oltp_point_select --tables=32 --table-size=10000000 prepare
數據預熱與統計信息收集
數據預熱可將磁盤中的數據載入內存的 block cache 中,預熱后的數據對系統整體的性能有較大的改善,建議在每次重啟集群后進行一次數據預熱。
若使用的當前Sysbench 版本沒有提供數據預熱的功能,需要手動進行數據預熱。如果使用更新的 Sysbench 版本,可以使用自帶的預熱功能,可以跳過。
以 Sysbench 中某張表 sbtest7 為例,執行如下 SQL 語句 進行數據預熱:
SELECT COUNT(pad) FROM sbtest7 USE INDEX (k_7);
統計信息收集有助於優化器選擇更為准確的執行計划,可以通過 analyze
命令來收集表 sbtest 的統計信息,每個表都需要統計。
ANALYZE TABLE sbtest7;
測試命令
Point select 測試命令
sysbench --config-file=config oltp_point_select --tables=32 --table-size=10000000 run
Update index 測試命令
sysbench --config-file=config oltp_update_index --tables=32 --table-size=10000000 run
Read-only 測試命令
sysbench --config-file=config oltp_read_only --tables=32 --table-size=10000000 run