使用sysbench進行oltp測試之前,需要核對一下sysbench的版本,因為不同版本在使用的參數時,會有一定的差異。
mysql dba這本書中的sysbench使用的是0.5的版本,ubuntu中默認apt-get安裝的是0.4.12版本,在執行數據准備時,參數不同,會報錯->
不知道的選項,不知道的參數,文件路徑找不到
所以,建議在測試之前,確認一下版本的一致性,或者使用提供的help命令,確認提供的參數。
此次測試環境以及工具版本為:
-
CentOS Linux release 7.3.1611 (Core) sysbench 0.5 mysql Ver 14.14 Distrib 5.6.37, for Linux (x86_64) using EditLine wrapper
在oltp測試中,基本分為三個階段:
1、初始化數據
需要在數據庫中提前創建好sbtest數據庫,若不創建,也可使用參數指定對應的數據庫,進行數據插入准備
根據自己電腦的實際情況拼寫參數,如,mysql-user和mysql-password分別對應的是數據庫的登錄名和密碼,mysql-socket需要指定mysql.sock文件的位置【查看my.cnf配置文件】
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock prepare
參數:
--mysql-db=test //測試數據庫 --mysql-user=root //用戶名 --myssql-password=123456 //密碼 --oltp-tables-count=8 //表的數量 --oltp-table-size=100000 //每張表記錄為10萬 --mysql-sock=/var/lib/mysql/mysql.sock //mysql.sock路徑,本地連接時可指定host ip連接,也可直接使用Mysql.sock連接
執行完建表語句后,生成一下數據
執行結果:在使用root賬戶登錄數據庫,在sbtest數據庫中插入三張表,每張表1000000條數據

2、執行測試
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock --max-time=60 --max-requests=0 --num-threads=8 --report-interval=10 run
新增的幾個參數選項:
--num-threads=8 //線程數為8 --max-time=60 //測試時間為60s --report-interval=10 //報告打印周期為10s,每10s打印一次 --oltp-read-only=off //非只讀操作測試
最重要的參數指標:
總的事務數,每秒事務數,時間統計信息(最大、最小、平均、95%以上語句響應時間)
3、清理數據
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock cleanup

測試過程中的問題:
1、oltp的位置指定,報錯找不到對應的oltp.lua文件
注:此處需要指定oltp.lua腳本位置,sysbench5默認已經指定,如果按照網上或者樹上的語句,提示如下報錯,找不到對應的文件,發現自己寫的路徑前又追加了sysbench自帶的路徑,直接指定到了sysbench子文件夾。

需要改變路徑,直接指定oltp.lua即可
sysbench --test=oltp.lua --mysql-table-engine=innodb --oltp-tables-count=3 --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock prepare