sysbench壓測mysql性能測試命令和報告
- 一、安裝sysbench工具
- 二、創建測試數據庫
- 三、基于sysbench構造測試表和測試數據
- 四、數據庫性能測試
- 1、數據庫讀寫性能測試
- 2、數據庫讀性能測試
- 3、數據庫刪除性能測試
- 4、數據庫更新索引字段性能測
- 5、數據庫更新非索引字段性能測試
- 6、數據庫插入數據性能測試
- 7、數據庫寫性能測試
- 8、執行完成壓測之后可以將run改成cleanup,清除數據
一、安裝sysbench工具
- 下載sysbench工具
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
- 安裝sysbench工具
sudo yum -y install sysbench
- 查看安裝后的版本號
sysbench --version
二、創建測試數據庫
登到mysql后臺,創建sysbench數據庫
create database tssysbench;
注意:如果沒tssysbench數據庫,執行后續sysbench命令時會報下面的錯誤。
三、基于sysbench構造測試表和測試數據
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=10 \
--threads=128 --time=300 \
prepare
命令行中的參數說明:
? --db-driver=mysql:代表數據庫驅動
? --time=300:這個就是說連續訪問300秒
? --threads=128:這個就是說用128個線程模擬并發訪問
? --report-interval=10:這個就是說每隔10秒輸出一下壓測情況
? --mysql-host=172.16.111.109 --mysql-port=13306 --mysql-user=root --mysql-password=123456:數據庫的用戶和密碼等信息
? --mysql-db=tssysbench --tables=20 --table_size=1000000:這一串的意思,就是說在tssysbench這個庫里,構造20個測試表,每個測試表里構造100萬條測試數據,測試表的名字會是類似于sbtest1,sbtest2這個樣子的
?/usr/share/sysbench/oltp_read_write:這個就是說,執行oltp數據庫的讀寫測試
?最后有一個prepare,意思是參照這個命令的設置去構造出來我們需要的數據庫里的數據,他會自動創建20個測試表,每個表里創建100萬條測試數據,所以這個工具是非常的方便的。
? 下面是執行過程中的輸出信息:
? 查詢表中的數據,發現表里面有100w條數據:
四、數據庫性能測試
1、數據庫讀寫性能測試
?數據庫讀寫性能測試,將執行指令最后的prepare修改成run:
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=10 \
--threads=64 --time=30 \
run
?下面是截取的執行10秒,20秒,30秒的數據。
[ 10s ] thds: 64 tps: 1184.53 qps: 23779.02 (r/w/o: 16660.13/4743.43/2375.46) lat (ms,95%): 97.55 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 64 tps: 860.68 qps: 17213.78 (r/w/o: 12045.88/3446.54/1721.37) lat (ms,95%): 161.51 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 64 tps: 692.06 qps: 13844.57 (r/w/o: 9691.79/2768.65/1384.13) lat (ms,95%): 267.41 err/s: 0.00 reconn/s: 0.00
對表中的數據進行說明,以第一條數據做解釋描述:
thds: 64,這個意思就是有10個線程在壓測
tps: 1184.53,這個意思就是每秒執行了1184.53個事務
qps: 23779.02,這個意思就是每秒可以執行23779.02個請求(r/w/o: 16660.13/4743.43/2375.46),這個意思就是說,在每秒23779.02個請求中,有16660.13個請求是讀請求,4743.43個請求是寫請求,2375.46個請求是其他的請求,就是對QPS進行了拆解
lat (ms, 95%): 97.55,這個意思就是說,95%的請求的延遲都在 97.55毫秒以下
err/s: 0.00 reconn/s: 0.00,這兩個的意思就是說,每秒有0個請求是失敗的,發生了0次網絡重連
下面是執行完成后控制臺輸出的數據:
2、數據庫讀性能測試
sysbench /usr/share/sysbench/oltp_read_only.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
3、數據庫刪除性能測試
sysbench /usr/share/sysbench/oltp_delete.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
4、數據庫更新索引字段性能測
sysbench /usr/share/sysbench/oltp_update_index.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
5、數據庫更新非索引字段性能測試
sysbench /usr/share/sysbench/oltp_update_non_index.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
6、數據庫插入數據性能測試
sysbench /usr/share/sysbench/oltp_insert.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
7、數據庫寫性能測試
sysbench /usr/share/sysbench/oltp_write_only.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
run
8、執行完成壓測之后可以將run改成cleanup,清除數據
sysbench /usr/share/sysbench/oltp_read_write.lua \
--mysql-host=172.16.111.109 --mysql-port=13306 \
--mysql-user=root --mysql-password='123456' \
--mysql-db=tssysbench --db-driver=mysql \
--tables=20 --table-size=1000000 --report-interval=30 \
--threads=64 --time=120 \
cleanup