使用sysbench對mysql效能基測

1、基測的作用

分析當前資料庫的配置下(包括硬體配置、系統配置、資料庫配置等)資料庫在各個方面的表現,從而找出Mysql的效能瓶頸,隨後根據業務的實際需求進行相應的挑戰。

2、基測得方式

(1)針對整個系統,進行類似http request的方式測試,可以全方位的測試當前整個系統的優點和缺陷,但是這種方式考慮的點太多,如網路、負載均衡、前端硬體等,相對比較難測試。

(2)單獨針對mysql測試,此種方式只能測試mysql,對整個系統沒辦法測試。

一般使用的工具有sysbench、mysqlslap、fio等,sysbench相對測試的角度更多更強大。

3、常見的資料庫指標

(1)TPS/QPS:衡量吞吐量。

(2)響應時間:包括平均響應時間、最小響應時間、最大響應時間、前95%的請求的最大響應時間。

(3)併發量:同時處理的查詢請求的數量。

(4)處理總時間。

4、sysbench工具

sysbench是一個開源的、模組化的、跨平臺的多執行緒效能測試工具,可以用來進行CPU、記憶體、磁碟I/O、執行緒、資料庫的效能(OLTP)測試。目前支援的資料庫有MySQL、Oracle和PostgreSQL。

5、安裝sysbench

(1)yum安裝

yum -y install sysbench

(2)如果YUM找不到源,可自行官網下載安裝包原始碼安裝,如下:

wget http://sourceforge。net/projects/sysbench/sysbench-0。4。12。tar。gz

tar sysbench-0。4。12。tar。gz

cd sysbench-1。0

。/autogen。sh

。/configure

export LD_LIBRARY_PATH=/usr/local/mysql/include

make&make install

6、sysbench命令

使用sysbench對mysql效能基測

命令可以透過sysbench ——help檢視,具體命令作用可以檢視釋義。

測試mysql使用到的命令及釋義如下:

(1)command

command即執行操作,操作分別是perpare、run、clean,perpare為測試前做資料準備,run即執行測試,clean是在測試結束後對資料庫進行清理。

(2)測試方式

-

oltp-test-mode 執行(run)模式,分讀、寫、更新、讀寫操作等。

——oltp-test-mode:執行模式,包括simple、nontrx和complex,預設是complex。simple模式下只測試簡單的查詢;nontrx不僅測試查詢,還測試插入更新等,但是不使用事務;complex模式下測試最全面,會測試增刪改查,而且會使用事務。可以根據自己的需要選擇測試模式。

——oltp-tables-count:測試的表數量,根據實際情況選擇

——oltp-table-size:測試的表的大小,根據實際情況選擇

——threads:客戶端的併發連線數

——time:測試執行的時間,單位是秒,該值不要太短,可以選擇120

——report-interval:生成報告的時間間隔,單位是秒,如10。

其他命令介紹請檢視釋義。

7、測試準備

(1)mysql建立測試庫

使用sysbench對mysql效能基測

8、使用sysbench測試test庫

先切換到測試指令碼目錄:/usr/share/sysbench

(1)準備資料

sysbench oltp_read_write。lua ——mysql-host=127。0。0。1 ——mysql-port=3306 ——mysql-db=test ——mysql-user=root ——mysql-password=‘1qaz@WSX’ ——table_size=20000000 ——tables=1 ——threads=500 ——events=500000 ——report-interval=10 ——time=0 perpare

等幾分鐘後會在mysql中的test庫中建立一張名為sbtest1 的表。

使用sysbench對mysql效能基測

(2)執行測試

sysbench oltp_read_write。lua ——mysql-host=127。0。0。1 ——mysql-port=3306 ——mysql-db=test ——mysql-user=root ——mysql-password=‘1qaz@WSX’ ——table_size=20000000 ——tables=1 ——threads=500 ——events=500000 ——report-interval=10 ——time=0 run

使用complex模式,針對讀寫測試,使用1個表,每個表2000W條資料,併發500,10s生成一次報告

使用sysbench對mysql效能基測

使用sysbench對mysql效能基測

(3)結果彙總分析

可根據常見指標或者自己業務關注的點分析,建議多測試幾次取其平均值作為參考,單次測試一般不能作為參考。

使用sysbench對mysql效能基測

然後生成相關的模型圖或者報表就可以清楚的對比出mysql在不同的環境中效能狀況。

(4)清理資料

sysbench oltp_read_write。lua ——mysql-host=127。0。0。1 ——mysql-port=3306 ——mysql-db=test ——mysql-user=root ——mysql-password=‘1qaz@WSX’ ——table_size=20000000 ——tables=1 ——threads=500 ——events=500000 ——report-interval=10 ——time=0 cleanup