sysbench mysql-ssd與hdd性能測試

測試環境

操作系統:CentOS7.2.1511 64位

mysql:MySQL5.7.12 64位

硬盤:SSD、HDD

測試工具:sysbench0.5

安裝sysbench0.5

更新和安裝依賴包

git clone https://github.com/akopytov/sysbench 
cd  sysbench
./autogen.sh

# with-mysql-includes 指定MySQL安裝目錄

# with-mysql-libs 指定MySQL lib所在目錄

./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/
make && make install

出現如下報錯

/bin/sh ../libtool --tag=CC   --mode=link gcc -pthread -g -O2      -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/oltp/libsboltp.a tests/mutex/libsbmutex.a drivers/mysql/libsbmysql.a -L/usr/mysql/lib -lmysqlclient_r not found

cd /usr/local/mysql/lib/mysql/ 
ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
cp /usr/bin/libtool libtool

第二個問題是安裝完sysbench之後執行時報錯: 

這說明sysbench無法找到mysql的庫文件,這很可能是環境變量LD_LIBRARY_PATH沒有設置,設置後即可解決該問題: 

export LD_LIBRARY_PATH=/usr/local/mysql/lib

一.數據準備

[root@localhost sysbench_0.5]# sysbench --mysql-db=iotest --num-threads=24 --mysql-engine-trx=yes --mysql-table-engine=innodb --rand-type=special --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123123 --mysql-socket=/tmp/mysql.sock --test=sysbench/tests/db/oltp.lua --oltp_tables_count=50 --oltp-table-size=10000 --rand-init=on prepare

二.INNODB 測試命令

[root@localhost sysbench]#sysbench --mysql-db=iotest --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=localhost --mysql-port=3306 --mysql-user=root --mysql-password=123123 --mysql-socket=/tmp/mysql.sock --test=sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=10000 --num-threads=10 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=600 --max-requests=0 --percentile=95 run

參數說明

--mysql-db:指定在哪個數據庫創建測試表,默認爲iotest庫,需要提前創建好

--num-threads:使用多線程創建多表,節省準備時間

--mysql-engine-trx=yes 支持事務

--mysql-table-engine:指定存儲引擎,如myisam,innodb,heap,ndbcluster,bdb,maria,falcon,pbxt 默認InnoDB

--test=tests/db/oltp.lua 表示調用 tests/db/oltp.lua 腳本進行 oltp 模式測試

--oltp_tables_count=10 表示會生成 10 個測試表

--oltp-table-size=10000 表示每個測試表填充數據量爲 10000

--oltp-read-only=off 表示不要進行只讀測試,也就是會採用讀寫混合模式測試

--report-interval=10 表示每10秒輸出一次測試進度報告

--rand-type=uniform:數據分佈模式,special表示存在熱點數據,uniform表示非熱點數據模式: uniform(固定),gaussian(高斯),special(特定的),pareto(帕累託)

--max-time=600 表示最大執行時長爲 600秒

--max-requests=0 表示總請求數爲 0,因爲上面已經定義了總執行時長,所以總請求數可以設定爲 0;也可以只設定總請求數,不設定最大執行時長

--percentile=95 表示設定採樣比例,默認是 95%,即丟棄5%的長請求,在剩餘的95%裏取最大值

三.測試結果

SSD.TPS=495.30K/S HDD.TPS=83.06K/S 

SSD.reads=6934.34K/S HDD.reads=1163.4K/S 

SSD.writes=1981.18K/S HDD.writes=332.347K/S

SSD.Response_time=37.08ms HDD.Response_time=420.25ms

四.測試結論

1.TPS事物處理:MySQL在SSD上運行是在HDD上運行的5.9631倍

2.reads:MySQL在SSD上運行是在HDD上運行的5.9604倍

3.writes:MySQL在SSD上運行是在HDD上運行的5.9611倍

4.Response_time:MySQL在SSD上運行比在HDD上運行響應時間快11.33倍

5.Errors:MySQL在SSD上運行是在HDD上運行錯誤率高2倍              這點和預期有些出入


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章