資料庫壓測-sysbench
阿新 • • 發佈:2021-01-11
ubuntu安裝
##前提:先安裝PostgreSQL和PostgreSQL-devel,如果軟體倉庫中版本太低,就直接編譯安裝 wget https://github.com/akopytov/sysbench/archive/1.0.20.tar.gz sudo apt install -y automake sudo apt install -y libtool sudo apt install -y pkg-config sudo apt install -y libmysqlclient-dev mv 1.0.20.tar.gz sysbench.tar.gz tar -xzvf sysbench.tar.gz cd sysbench-1.0.20/ ./autogen.sh ./configure --with-pgsql --with-pgsql-includes=/mnt/d/work/ubuntu/app/postgresql/include --with-pgsql-libs=/mnt/d/work/ubuntu/app/postgresql/lib make sudo make install export LD_LIBRARY_PATH=/mnt/d/work/ubuntu/app/postgresql/lib/:$LD_LIBRARY_PATH sysbench --help
centos安裝
沒有測試
##前提:先安裝PostgreSQL和PostgreSQL-devel,如果軟體倉庫中版本太低,就直接編譯安裝 yum install gcc gcc-c++ automake make libtool mysql-community-devel mysql-devel yum install automake libtool –y yum -y install postgresql postgresql-devel wget https://github.com/akopytov/sysbench/archive/1.0.20.tar.gz mv 1.0.20.tar.gz sysbench.tar.gz tar -xzvf sysbench.tar.gz cd sysbench-1.0.20/ ./autogen.sh ./configure --with-pgsql --with-pgsql-includes=/usr/pgsql-10/include --with-pgsql-libs=/usr/pgsql-10/lib make -j 2 sudo make install
使用
壓測PostgreSQL
##準備資料 sysbench --db-driver=pgsql --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=test --table_size=25000 --tables=250 --events=0 --time=600 oltp_read_only prepare ##執行workload oltp_read_only/oltp_write_only/oltp_read_write sysbench --db-driver=pgsql --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=test --table_size=25000 --tables=250 --events=0 --time=600 --threads=2 --percentile=95 --range_selects=0 --skip-trx=1 --report-interval=1 oltp_read_only run ##清理 sysbench --db-driver=pgsql --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=test --table_size=25000 --tables=250 --events=0 --time=600 --threads=2 --percentile=95 --range_selects=0 oltp_read_only cleanup
指定lua指令碼
sysbench --db-driver=pgsql --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=test --oltp-table-size=10000 --threads=10 --time=120 --events=0 --report-interval=10 --percentile=99 ./sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua prepare
sysbench --db-driver=pgsql --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=test --oltp-table-size=10000 --threads=10 --time=120 --events=0 --report-interval=10 --percentile=99 ./sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua run
sysbench --db-driver=pgsql --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=postgres --pgsql-db=test --oltp-table-size=10000 --threads=10 --time=120 --events=0 --report-interval=10 --percentile=99 ./sysbench-1.0.20/tests/include/oltp_legacy/oltp.lua cleanup
壓測mysql
##準備資料
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=250 --events=0 --time=600 oltp_read_only prepare
##執行workload
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=250 --events=0 --time=600 --threads=XXX --percentile=95 --range_selects=0 --skip-trx=1 --report-interval=1 oltp_read_only run
##清理
sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=250 --events=0 --time=600 --threads=XXX --percentile=95 --range_selects=0 oltp_read_only cleanup
輸出結果解析
-- 每10秒鐘報告一次測試結果,tps、每秒讀、每秒寫、99%以上的響應時長統計
[ 100s ] thds: 10 tps: 967.59 qps: 19659.36 (r/w/o: 13785.63/3868.85/2004.88) lat (ms,99%): 22.28 err/s: 17.10 reconn/s: 0.00
[ 110s ] thds: 10 tps: 727.29 qps: 14821.11 (r/w/o: 10396.20/2913.34/1511.57) lat (ms,99%): 31.94 err/s: 15.30 reconn/s: 0.00
[ 120s ] thds: 10 tps: 570.63 qps: 11608.69 (r/w/o: 8140.82/2280.92/1186.96) lat (ms,99%): 27.66 err/s: 11.10 reconn/s: 0.00
SQL statistics:
queries performed:
read: 1093134 -- 讀總數
write: 305474 -- 寫總數
other: 159493 -- 其他操作總數(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
total: 1558101 -- 全部總數
transactions: 76350 (636.18 per sec.) -- 總事務數(每秒事務數)
queries: 1558101 (12982.76 per sec.) -- 查詢總數(每秒查詢數)
ignored errors: 1731 (14.42 per sec.) -- 忽略的錯誤數
reconnects: 0 (0.00 per sec.) -- 重連次數
General statistics:
total time: 120.0115s -- 總耗時
total number of events: 76350 -- 共發生多少事務
Latency (ms):
min: 3.18 -- 最小耗時
avg: 15.71 -- 平均耗時
max: 2019.94 -- 最長耗時
99th percentile: 38.25 -- 超過99%平均耗時
sum: 1199632.83 -- 總耗時
Threads fairness:
events (avg/stddev): 7635.0000/378.32 --標準差:標準偏差越小,這些值偏離平均值就越少,反之亦然
execution time (avg/stddev): 119.9633/0.00
作圖
作圖可以參考:https://www.jianshu.com/p/5250abb16fc3