使用sysbench測試mysql及postgresql(完整版)
前言
使用sysbench測試數據庫十分的麻煩(主要是sysbench安裝麻煩),本人需要測試mysql及postgresql,mysql可以正常編譯通過,postgresql的怎么都不行,后來群內有網友提供編譯版,
發現一切都好使了😊,在此感謝某網友提供的編譯版sysbench
另外,如在使用過程中報各種莫名其妙的錯誤請使用yum或apt安裝下mysql或postgresql ,后續基本都順利~
sysbench主要參數
- --threads=10:表示發起10個並發連接
- --report-interval=20:表示每10秒輸出一次測試進度報告
- --oltp-tables-count=3:表示會生成3個測試表
- --oltp-table-size=50000000:表示每個測試表填充數據量為50000000
下載執行文件
- 地址 https://github.com/funnyzpc/sysbench_bin
- 添加執行權限
cd sysbench_bin & chmod a+x sysbench_*
使用方式
- mysql:
./sysbench_mysql [執行參數]
- postgresql:
./sysbench_pg [執行參數]
- oracle:
./sysbench_ora [執行參數]
mysql 測試
構建測試數據
./sysbench_mysql --test=./tests/include/oltp_legacy/oltp.lua \
--mysql-host=服務域名或地址 --mysql-port=服務端口 --mysql-user=數據庫用戶 --mysql-password=數據庫密碼 --mysql-db=測試DB \
--oltp-test-mode=complex --oltp-tables-count=3 --oltp-table-size=50000000 \
--threads=12 --time=120 --report-interval=20 prepare
執行測試
- 復雜模式執行復雜查詢
./sysbench_mysql --test=./tests/include/oltp_legacy/oltp.lua \
--mysql-host=服務域名或地址 --mysql-port=服務端口 --mysql-user=數據庫用戶 --mysql-password=數據庫密碼 --mysql-db=測試DB \
--oltp-test-mode=complex --oltp-read-only=on --oltp-tables-count=3 --oltp-table-size=50000000 \
--threads=12 --time=120 --report-interval=20 run >> /mnt/sysbench/mysql_bench_complex_20210400.log
- 簡單模式執行增刪改查
./sysbench_mysql --test=./tests/include/oltp_legacy/oltp.lua \
--mysql-host=服務域名或地址 --mysql-port=服務端口 --mysql-user=數據庫用戶 --mysql-password=數據庫密碼 --mysql-db=測試DB \
--oltp-test-mode=simple --oltp-tables-count=3 --oltp-table-size=50000000 \
--threads=12 --time=120 --report-interval=20 run >> /mnt/sysbench/mysql_bench_simple_20210400.log
清理測試數據
./sysbench_mysql --test=./tests/include/oltp_legacy/oltp.lua \
--mysql-host=服務域名或地址 --mysql-port=服務端口 --mysql-user=數據庫用戶 --mysql-password=數據庫密碼 --mysql-db=測試DB \
--oltp-tables-count=3 cleanup
postgresql測試
構建測試數據
./sysbench_pg --test=./tests/include/oltp_legacy/oltp.lua \
--pgsql-host=服務域名或地址 --pgsql-port=服務端口 --pgsql-user=數據庫用戶 --pgsql-password=數據庫密碼 \
--pgsql-db=測試DB --oltp-tables-count=3 --oltp-table-size=50000000 \
--report-interval=20 --threads=12 \
prepare
執行測試
- 復雜模式執行復雜查詢
./sysbench_pg --test=./tests/include/oltp_legacy/oltp.lua \
--pgsql-host=服務域名或地址 --pgsql-port=服務端口 --pgsql-user=數據庫用戶 --pgsql-password=數據庫密碼 \
--pgsql-db=測試DB --oltp-tables-count=3 --oltp-table-size=50000000 \
--oltp-test-mode=complex --oltp-read-only=on --report-interval=20 --threads=12 \
run >> /mnt/sysbench/pg_bench_complex_20210400.log
- 簡單模式執行增刪改查
./sysbench_pg --test=./tests/include/oltp_legacy/oltp.lua \
--pgsql-host=服務域名或地址 --pgsql-port=服務端口 --pgsql-user=數據庫用戶 --pgsql-password=數據庫密碼 \
--pgsql-db=測試DB --oltp-tables-count=3 --oltp-table-size=50000000 \
--oltp-test-mode=simple --report-interval=20 --threads=12 \
run >> /mnt/sysbench/pg_bench_simple_20210400.log
清理文件
-- [錯誤]
./sysbench_pg --test=./tests/include/oltp_legacy/oltp.lua \
--pgsql-host=服務域名或地址 --pgsql-port=服務端口 --pgsql-user=數據庫用戶 --pgsql-password=數據庫密碼 \
--pgsql-db=測試DB --oltp-tables-count=3 --oltp-table-size=50000000 \
cleanup
以上清理文件需要說明的是:可能由於sysbench_pg編譯的版本比較低所以sysbench_pg在執行的時候會拋錯,但這不是大問題,簡單處理就是手動刪除下測試表~
--各位周末愉快😀--