1. 程式人生 > >sysbench壓測自裝MySQL資料庫

sysbench壓測自裝MySQL資料庫

壓測準備

測試機器

  • 2vCPUs | 4GB | s6.large.2 CentOS 7.6 64bit

    建立測試庫

create database test_db 
character set utf8mb4 collate utf8mb4_bin;

下載sysbench

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
sysbench --version
sysbench 1.0.19  

準備測試表

sysbench 
//基於mysql的驅動去連線mysql資料庫
--db-driver=mysql 
//連續訪問300秒
--time=300 
//10個執行緒模擬併發訪問
--threads=10 
//每隔1秒輸出一下壓測情況
--report-interval=1 
//本機
--mysql-host=127.0.0.1 
//埠號:3306
--mysql-port=3306 
//測試使用者
--mysql-user=root 
//測試密碼
--mysql-password=******* 
//測試資料庫
--mysql-db=test_db 
//模擬新建20個表
--tables=20 
//100萬條資料 執行oltp資料庫的讀寫測試
--table_size=1000000 oltp_read_write 
//參照這個命令的設定去構造出來我們需要的資料庫裡的資料
//自動建立20個測試表,每個表裡建立100萬條測試資料
--db-ps-mode=disable prepare

執行命令之後:

Initializing worker threads...                                                                                                             
                                                                                                                                           
Creating table 'sbtest9'...                                                                                                                
Creating table 'sbtest1'...                                                                                                                
Creating table 'sbtest4'...                                                                                                                
Creating table 'sbtest2'...                                                                                                                
Creating table 'sbtest5'...                                                                                                                
Creating table 'sbtest7'...                                                                                                                
Creating table 'sbtest6'...
Creating table 'sbtest3'...
Creating table 'sbtest8'...
Creating table 'sbtest10'...
Inserting 1000000 records into 'sbtest9'
Inserting 1000000 records into 'sbtest4'
Inserting 1000000 records into 'sbtest5'
Inserting 1000000 records into 'sbtest8'
Inserting 1000000 records into 'sbtest6'
Inserting 1000000 records into 'sbtest2'
Inserting 1000000 records into 'sbtest7'
Inserting 1000000 records into 'sbtest1'
Inserting 1000000 records into 'sbtest10'
Inserting 1000000 records into 'sbtest3'

測試指標

thds: 10 tps: 489.10 qps: 9735.09 (r/w/o: 6817.46/1939.42/978.21) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
  • thds 壓測執行緒數
  • tps 每秒事務數
  • qps 每秒請求數
  • (r/w/o) 每秒的請求數中讀請求個數/寫請求個數/其他請求個數
  • lat(ms,95%) 95% 的請求延遲都在多少以下
  • err/s 錯誤數
  • reconn/s 重連數
SQL statistics:
    queries performed:
        read:                            1785882
        write:                           510252
        other:                           255126
        total:                           2551260
    transactions:                        127563 (425.09 per sec.)
    queries:                             2551260 (8501.77 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0839s
    total number of events:              127563

Latency (ms):
         min:                                    4.24
         avg:                                   23.52
         max:                                 1087.40
         95th percentile:                       69.29
         sum:                              2999819.79

Threads fairness:
    events (avg/stddev):           12756.3000/52.74
    execution time (avg/stddev):   299.9820/0.00
  • 300s內執行了178萬讀請求,50萬寫請求,25萬其他請求,總共執行了255萬請求。
  • 總共執行事務12萬,每秒425次事務
  • 總共執行255萬次請求,每秒8500次請求
  • 總用時:300s,127563次事務
  • 延遲最小 4.24ms
  • 平均請求 23.52ms
  • 延遲最大 1087ms
  • 95% 的請求延遲在69ms

開始測試

綜合TPS,oltp_read_write

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run

測試資料

[ 261s ] thds: 10 tps: 489.10 qps: 9735.09 (r/w/o: 6817.46/1939.42/978.21) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 262s ] thds: 10 tps: 398.03 qps: 8034.62 (r/w/o: 5613.43/1625.12/796.06) lat (ms,95%): 74.46 err/s: 0.00 reconn/s: 0.00
[ 263s ] thds: 10 tps: 325.93 qps: 6459.53 (r/w/o: 4532.97/1275.71/650.85) lat (ms,95%): 150.29 err/s: 0.00 reconn/s: 0.00
[ 264s ] thds: 10 tps: 499.17 qps: 9961.43 (r/w/o: 6975.40/1986.68/999.34) lat (ms,95%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 265s ] thds: 10 tps: 431.96 qps: 8644.16 (r/w/o: 6038.42/1741.83/863.92) lat (ms,95%): 68.05 err/s: 0.00 reconn/s: 0.00
[ 266s ] thds: 10 tps: 433.91 qps: 8723.24 (r/w/o: 6108.77/1747.65/866.83) lat (ms,95%): 78.60 err/s: 0.00 reconn/s: 0.00
[ 267s ] thds: 10 tps: 450.07 qps: 8997.40 (r/w/o: 6302.98/1793.28/901.14) lat (ms,95%): 64.47 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            1785882
        write:                           510252
        other:                           255126
        total:                           2551260
    transactions:                        127563 (425.09 per sec.)
    queries:                             2551260 (8501.77 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0839s
    total number of events:              127563

Latency (ms):
         min:                                    4.24
         avg:                                   23.52
         max:                                 1087.40
         95th percentile:                       69.29
         sum:                              2999819.79

Threads fairness:
    events (avg/stddev):           12756.3000/52.74
    execution time (avg/stddev):   299.9820/0.00

只讀效能,oltp_read_only

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run

測試資料

[ 199s ] thds: 10 tps: 867.92 qps: 13910.67 (r/w/o: 12174.84/0.00/1735.83) lat (ms,95%): 13.95 err/s: 0.00 reconn/s: 0.00
[ 200s ] thds: 10 tps: 907.19 qps: 14500.97 (r/w/o: 12686.60/0.00/1814.37) lat (ms,95%): 14.46 err/s: 0.00 reconn/s: 0.00
[ 201s ] thds: 10 tps: 913.33 qps: 14610.29 (r/w/o: 12783.63/0.00/1826.66) lat (ms,95%): 14.46 err/s: 0.00 reconn/s: 0.00
[ 202s ] thds: 10 tps: 904.80 qps: 14486.87 (r/w/o: 12677.26/0.00/1809.61) lat (ms,95%): 14.21 err/s: 0.00 reconn/s: 0.00
[ 203s ] thds: 10 tps: 895.75 qps: 14329.00 (r/w/o: 12537.50/0.00/1791.50) lat (ms,95%): 12.75 err/s: 0.00 reconn/s: 0.00
[ 204s ] thds: 10 tps: 920.16 qps: 14715.57 (r/w/o: 12877.25/0.00/1838.32) lat (ms,95%): 12.52 err/s: 0.00 reconn/s: 0.00
[ 205s ] thds: 10 tps: 913.00 qps: 14635.93 (r/w/o: 12807.94/0.00/1827.99) lat (ms,95%): 14.21 err/s: 0.00 reconn/s: 0.00
[ 206s ] thds: 10 tps: 908.77 qps: 14509.38 (r/w/o: 12692.83/0.00/1816.55) lat (ms,95%): 14.21 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            3682476
        write:                           0
        other:                           526068
        total:                           4208544
    transactions:                        263034 (876.75 per sec.)
    queries:                             4208544 (14027.94 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0102s
    total number of events:              263034

Latency (ms):
         min:                                    1.66
         avg:                                   11.40
         max:                                  183.17
         95th percentile:                       15.27
         sum:                              2999435.93

Threads fairness:
    events (avg/stddev):           26303.4000/298.92
    execution time (avg/stddev):   299.9436/0.00

刪除效能,oltp_delete

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_delete --db-ps-mode=disable run

測試資料

[ 183s ] thds: 10 tps: 3732.66 qps: 3732.66 (r/w/o: 0.00/1143.90/2588.76) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 184s ] thds: 10 tps: 3741.75 qps: 3741.75 (r/w/o: 0.00/1129.92/2611.82) lat (ms,95%): 8.28 err/s: 0.00 reconn/s: 0.00
[ 185s ] thds: 10 tps: 4053.34 qps: 4053.34 (r/w/o: 0.00/1261.11/2792.23) lat (ms,95%): 7.70 err/s: 0.00 reconn/s: 0.00
[ 186s ] thds: 10 tps: 3831.98 qps: 3831.98 (r/w/o: 0.00/1133.99/2697.98) lat (ms,95%): 8.43 err/s: 0.00 reconn/s: 0.00
[ 187s ] thds: 10 tps: 3996.16 qps: 3996.16 (r/w/o: 0.00/1188.05/2808.11) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 188s ] thds: 10 tps: 4178.94 qps: 4178.94 (r/w/o: 0.00/1249.98/2928.95) lat (ms,95%): 7.17 err/s: 0.00 reconn/s: 0.00
[ 189s ] thds: 10 tps: 3654.09 qps: 3654.09 (r/w/o: 0.00/1054.03/2600.06) lat (ms,95%): 8.90 err/s: 0.00 reconn/s: 0.00
[ 190s ] thds: 10 tps: 3700.97 qps: 3700.97 (r/w/o: 0.00/1120.99/2579.98) lat (ms,95%): 8.43 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            0
        write:                           366172
        other:                           552067
        total:                           918239
    transactions:                        918239 (3060.73 per sec.)
    queries:                             918239 (3060.73 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0048s
    total number of events:              918239

Latency (ms):
         min:                                    0.04
         avg:                                    3.27
         max:                                  586.35
         95th percentile:                        9.39
         sum:                              2999188.03

Threads fairness:
    events (avg/stddev):           91823.9000/400.61
    execution time (avg/stddev):   299.9188/0.00

更新索引欄位效能,oltp_update_index

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_index --db-ps-mode=disable run

測試資料

[ 222s ] thds: 10 tps: 4390.82 qps: 4390.82 (r/w/o: 0.00/968.18/3422.64) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 223s ] thds: 10 tps: 4451.01 qps: 4451.01 (r/w/o: 0.00/1029.23/3421.78) lat (ms,95%): 7.98 err/s: 0.00 reconn/s: 0.00
[ 224s ] thds: 10 tps: 4508.21 qps: 4508.21 (r/w/o: 0.00/1062.05/3446.16) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 225s ] thds: 10 tps: 3429.97 qps: 3429.97 (r/w/o: 0.00/811.76/2618.21) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 226s ] thds: 10 tps: 4667.34 qps: 4667.34 (r/w/o: 0.00/1093.31/3574.03) lat (ms,95%): 7.30 err/s: 0.00 reconn/s: 0.00
[ 227s ] thds: 10 tps: 4238.59 qps: 4238.59 (r/w/o: 0.00/990.90/3247.68) lat (ms,95%): 6.79 err/s: 0.00 reconn/s: 0.00
[ 228s ] thds: 10 tps: 4300.49 qps: 4300.49 (r/w/o: 0.00/1092.87/3207.62) lat (ms,95%): 7.43 err/s: 0.00 reconn/s: 0.00
[ 229s ] thds: 10 tps: 4447.64 qps: 4447.64 (r/w/o: 0.00/1079.15/3368.48) lat (ms,95%): 7.70 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            0
        write:                           295467
        other:                           936875
        total:                           1232342
    transactions:                        1232342 (4107.59 per sec.)
    queries:                             1232342 (4107.59 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0140s
    total number of events:              1232342

Latency (ms):
         min:                                    0.04
         avg:                                    2.43
         max:                                 1148.12
         95th percentile:                        7.70
         sum:                              2998912.79

Threads fairness:
    events (avg/stddev):           123234.2000/607.91
    execution time (avg/stddev):   299.8913/0.00

更新非索引欄位效能,oltp_update_non_index

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_non_index --db-ps-mode=disable run

測試資料

[ 215s ] thds: 10 tps: 4941.69 qps: 4941.69 (r/w/o: 0.00/1194.92/3746.76) lat (ms,95%): 6.55 err/s: 0.00 reconn/s: 0.00
[ 216s ] thds: 10 tps: 4107.03 qps: 4107.03 (r/w/o: 0.00/992.77/3114.26) lat (ms,95%): 7.98 err/s: 0.00 reconn/s: 0.00
[ 217s ] thds: 10 tps: 4584.08 qps: 4585.08 (r/w/o: 0.00/1044.25/3540.83) lat (ms,95%): 8.13 err/s: 0.00 reconn/s: 0.00
[ 218s ] thds: 10 tps: 4947.58 qps: 4946.58 (r/w/o: 0.00/1200.14/3746.44) lat (ms,95%): 6.21 err/s: 0.00 reconn/s: 0.00
[ 219s ] thds: 10 tps: 5302.95 qps: 5302.95 (r/w/o: 0.00/1248.99/4053.96) lat (ms,95%): 6.09 err/s: 0.00 reconn/s: 0.00
[ 220s ] thds: 10 tps: 4318.10 qps: 4318.10 (r/w/o: 0.00/1063.02/3255.08) lat (ms,95%): 6.79 err/s: 0.00 reconn/s: 0.00
[ 221s ] thds: 10 tps: 5652.77 qps: 5652.77 (r/w/o: 0.00/1363.94/4288.83) lat (ms,95%): 7.30 err/s: 0.00 reconn/s: 0.00
[ 222s ] thds: 10 tps: 4128.77 qps: 4128.77 (r/w/o: 0.00/973.95/3154.83) lat (ms,95%): 9.56 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            0
        write:                           322361
        other:                           1025120
        total:                           1347481
    transactions:                        1347481 (4491.48 per sec.)
    queries:                             1347481 (4491.48 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0065s
    total number of events:              1347481

Latency (ms):
         min:                                    0.05
         avg:                                    2.23
         max:                                  784.62
         95th percentile:                        7.04
         sum:                              2998814.89

Threads fairness:
    events (avg/stddev):           134748.1000/644.68
    execution time (avg/stddev):   299.8815/0.00

插入效能,oltp_insert

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_insert --db-ps-mode=disable run

測試資料

[ 230s ] thds: 10 tps: 1655.99 qps: 1655.99 (r/w/o: 0.00/1655.99/0.00) lat (ms,95%): 11.24 err/s: 0.00 reconn/s: 0.00
[ 231s ] thds: 10 tps: 1745.25 qps: 1745.25 (r/w/o: 0.00/1745.25/0.00) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 232s ] thds: 10 tps: 1669.10 qps: 1669.10 (r/w/o: 0.00/1669.10/0.00) lat (ms,95%): 12.75 err/s: 0.00 reconn/s: 0.00
[ 233s ] thds: 10 tps: 1676.79 qps: 1676.79 (r/w/o: 0.00/1676.79/0.00) lat (ms,95%): 11.24 err/s: 0.00 reconn/s: 0.00
[ 234s ] thds: 10 tps: 1721.36 qps: 1721.36 (r/w/o: 0.00/1721.36/0.00) lat (ms,95%): 11.04 err/s: 0.00 reconn/s: 0.00
[ 235s ] thds: 10 tps: 1639.59 qps: 1639.59 (r/w/o: 0.00/1639.59/0.00) lat (ms,95%): 11.87 err/s: 0.00 reconn/s: 0.00
[ 236s ] thds: 10 tps: 1800.01 qps: 1800.01 (r/w/o: 0.00/1800.01/0.00) lat (ms,95%): 9.91 err/s: 0.00 reconn/s: 0.00
[ 237s ] thds: 10 tps: 1674.80 qps: 1674.80 (r/w/o: 0.00/1674.80/0.00) lat (ms,95%): 9.91 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            0
        write:                           527182
        other:                           0
        total:                           527182
    transactions:                        527182 (1757.22 per sec.)
    queries:                             527182 (1757.22 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0081s
    total number of events:              527182

Latency (ms):
         min:                                    1.68
         avg:                                    5.69
         max:                                  525.61
         95th percentile:                       10.65
         sum:                              2998239.06

Threads fairness:
    events (avg/stddev):           52718.2000/60.72
    execution time (avg/stddev):   299.8239/0.00

寫入效能,oltp_write_only

測試命令

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_write_only --db-ps-mode=disable run

測試資料

[ 86s ] thds: 10 tps: 1112.14 qps: 6636.85 (r/w/o: 0.00/2819.36/3817.49) lat (ms,95%): 42.61 err/s: 0.00 reconn/s: 0.00
[ 87s ] thds: 10 tps: 1122.80 qps: 6736.82 (r/w/o: 0.00/2850.50/3886.32) lat (ms,95%): 27.66 err/s: 0.00 reconn/s: 0.00
[ 88s ] thds: 10 tps: 1226.66 qps: 7369.96 (r/w/o: 0.00/3021.16/4348.79) lat (ms,95%): 19.29 err/s: 0.00 reconn/s: 0.00
[ 89s ] thds: 10 tps: 645.13 qps: 3896.80 (r/w/o: 0.00/1665.34/2231.46) lat (ms,95%): 73.13 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 10 tps: 1062.22 qps: 6373.30 (r/w/o: 0.00/2721.55/3651.74) lat (ms,95%): 43.39 err/s: 0.00 reconn/s: 0.00
[ 91s ] thds: 10 tps: 984.95 qps: 5870.71 (r/w/o: 0.00/2502.88/3367.84) lat (ms,95%): 59.99 err/s: 0.00 reconn/s: 0.00
[ 92s ] thds: 10 tps: 1144.76 qps: 6870.55 (r/w/o: 0.00/2963.37/3907.17) lat (ms,95%): 22.69 err/s: 0.00 reconn/s: 0.00
[ 93s ] thds: 10 tps: 1018.26 qps: 6146.56 (r/w/o: 0.00/2684.68/3461.88) lat (ms,95%): 44.98 err/s: 0.00 reconn/s: 0.00

測試結果

SQL statistics:
    queries performed:
        read:                            0
        write:                           803503
        other:                           926111
        total:                           1729614
    transactions:                        288269 (960.86 per sec.)
    queries:                             1729614 (5765.13 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0115s
    total number of events:              288269

Latency (ms):
         min:                                    1.95
         avg:                                   10.41
         max:                                  413.10
         95th percentile:                       44.17
         sum:                              2999460.47

Threads fairness:
    events (avg/stddev):           28826.9000/33.90
    execution time (avg/stddev):   299.9460/0.00

測試完成-CleanUp

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='**' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable cleanup

Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
Dropping table 'sbtest4'...
Dropping table 'sbtest5'...
Dropping table 'sbtest6'...
Dropping table 'sbtest7'...
Dropping table 'sbtest8'...
Dropping table 'sbtest9'...
Dropping table 'sbtest10'...
Dropping table 'sbtest11'...
Dropping table 'sbtest12'...
Dropping table 'sbtest13'...
Dropping table 'sbtest14'...
Dropping table 'sbtest15'...
Dropping table 'sbtest16'...
Dropping table 'sbtest17'...
Dropping table 'sbtest18'...
Dropping table 'sbtest19'...
Dropping table 'sbtest20'...

測試彙總

condition read write other total transactions tps qps min avg max 95th
oltp_read_write 1785882 510252 255126 2551260 127563 425.09 8501.77 4.24ms 23.52ms 1087.40ms 69.29ms
oltp_read_only 3682476 0 526068 4208544 263034 876.75 14027.94 1.66ms 11.40ms 183.17ms 15.27ms
oltp_delete 0 366172 552067 918239 918239 3060.73 3060.73 0.04ms 3.27ms 586.35ms 9.39ms
oltp_update_index 0 295467 936875 1232342 1232342 4107.59 4107.59 0.04ms 2.43ms 1148.12ms 7.70ms
oltp_update_non_index 0 322361 1025120 1347481 1347481 4491.48 4491.48 0.05ms 2.23ms 784.62ms 7.04ms
oltp_insert 0 527182 0 527182 527182 1757.22 1757.22 1.68ms 5.69ms 525.61ms 10.65ms
oltp_write_only 0 803503 926111 1729614 288269 960.86 5765.13 1.95ms 10.41ms 431.10ms 44.17ms