前兩篇文章向大家介紹了sysbench和ycsb兩個開源效能基準測試工具,這兩個工具著重於對資料庫進行產品級基本的、與業務和應用無關的壓力測試。在這篇文章中將向大家介紹在傳統關係型資料庫領域中存在的以假想的零售業務為基礎的tpc-c效能測,並介紹基於sysbench的乙個開源工具sysbench-tpcc針對tidb和cockroach的用法。
tpc-c簡介
tpc-c是專門針對聯機交易處理系統(oltp系統)的規範,一般情況下我們也把這類系統稱為業務處理系統。2023年7月發布。幾乎所有在oltp市場提供軟硬平台的國外主流廠商都發布了相應的tpc-c測試結果,隨著計算機技術的不斷發展,這些測試結果也在不斷重新整理。
tpc-c測試用到的模型是乙個大型的商品批發銷售公司,它擁有若干個分布在不同區域的商品倉庫。當業務擴充套件的時候,公司將新增新的倉庫。每個倉庫負責為10個銷售點供貨,其中每個銷售點為3000個客戶提供服務,每個客戶提交的訂單中,平均每個訂單有10項產品,所有訂單中約10%的產品在其直接所屬的倉庫中沒有存貨,必須由其他區域的倉庫來供貨。同時,每個倉庫都要維護公司銷售的100000種商品的庫存記錄。
下面是tpc-c業務模型的邏輯示意圖:
下面是tpc-c的資料庫表關係結構圖:
tpcc執行事務的簡要說明
需要處理的交易事務主要為以下幾種:
1、新訂單(new-order) :客戶輸入一筆新的訂貨交易;
2、支付操作(payment) :更新客戶帳戶餘額以反映其支付狀況;
3、發貨(delivery) :發貨(模擬批處理交易);
4、訂單狀態查詢(order-status) :查詢客戶最近交易的狀態;
5、庫存狀態查詢(stock-level) :查詢倉庫庫存狀況,以便能夠及時**。
本文所介紹的sysbench-tpcc是percona公司基於sysbench開發的tpc-c標準的實現(tpcc.lua負責實現)。
2. 安裝
(1) 環境
sysbench:1.0.14 (要求先安裝好它)
tidb:2.0.x或2.1.x
cockroachdb:2.0.x或2.1.x
(2) 安裝部署
解壓軟體包:
tar xvfz 2.1.tar.gz
假設解壓之後的目錄為: /home/benchmark/sysbench-tpcc-2.1
3. 執行測試
在執行後面的工作之前,進入sysbench-tpcc相應的目錄:
cd /home/benchmark/sysbench-tpcc-2.1
注意:在執行下面的步驟之前,注意後面描述對於cockroachdb和tidb重要說明!!
(1) prepare(準備資料)
--mysql/tidb
./tpcc.lua --mysql-db=tpcc --mysql-user=root \
--mysql-host=192.168.13.171 --mysql-port=26257 --time=300 \
--threads=4 --report-interval=1 --tables=4 --scale=10 \
--db-driver=mysql prepare
--postgresql/cockroachdb
./tpcc.lua --pgsql-db=tpcc --pgsql-user=root \
--pgsql-host=192.168.13.171 --pgsql-port=26257 --time=300 \
--threads=4 --report-interval=1 --tables=4 --scale=10 \
--db-driver=pgsql prepare
(2) run(加壓測試)
--mysql/tidb
./tpcc.lua --mysql-db=tpcc --mysql-user=root \
--mysql-host=192.168.13.171 --mysql-port=26257 --time=300 \
--threads=4 --report-interval=1 --tables=4 --scale=10 \
--db-driver=mysql run
--postgresql/cockroachdb
./tpcc.lua --pgsql-db=tpcc --pgsql-user=root \
--pgsql-host=192.168.13.171 --pgsql-port=26257 --time=300 \
--threads=4 --report-interval=1 --tables=4 --scale=10 \
--db-driver=pgsql run
(3) clean(清理測試)
--mysql/tidb
./tpcc.lua --mysql-db=tpcc --mysql-user=root \
--mysql-host=192.168.13.171 --mysql-port=26257 --time=300 \
--threads=4 --report-interval=1 --tables=4 --scale=10 \
--db-driver=mysql clean
--postgresql/cockroachdb
./tpcc.lua --pgsql-db=tpcc --pgsql-user=root \
--pgsql-host=192.168.13.171 --pgsql-port=26257 --time=300 \
--threads=4 --report-interval=1 --tables=4 --scale=10 \
--db-driver=pgsql clean
對於cockroachdb的重要說明:
雖然cockraochdb相容postgresql,但是有些地方還不是100%相容,所以為了能夠讓sysbench-tpcc針對cockroachdb正常執行,需要修改相關lua檔案:
(1) 修改tpcc_common.lua檔案
把history表定義中h_data欄位的長度改為varchar(48)
(2) 修改tpcc.lua檔案,把before_restart_event函式體中的con:query("rollback")加上注釋
(3) 修改tpcc_run.lua檔案,把select語句中的for update字句去掉(cockroachdb目前不支援這個字句)
(4) 修改tpcc_common.lua檔案,找到下面**段
if drv:name() == "pgsql" then
show_query="select * from pg_catalog.pg_indexes where schemaname != 'information_schema' and schemaname != 'pg_catalog'
"repeat
rs= con:query(show_query)
ffi.c.usleep(1000)
until rs.nrows == sysbench.opt.tables * 14
end把紅色一行中的 * 14改為 * 15
對於tidb的重要說明:
* 由於目前tidb還不支援外來鍵,sysbench-tpcc要針對其能正常執行,需要修改tpcc_common.lua檔案中的相關ddls。
參考:
壓力測試工具
webbench最多可以模擬3萬個併發連線去測試 的負載能力,比apache自帶的ab壓力測試工具好,安裝使用也特別方便。1 適用系統 linux 2 編譯安裝 引用 wget tar zxvf webbench 1.5.tar.gz cd webbench 1.5 make make instal...
壓力測試工具
一 工具簡單介紹 二 工具簡單設定 圖1 1.在 settings 的功能設定中 如圖2 乙個是stress level threads 這裡是指定程式在後台用多少執行緒進行請求,也就是相當於模擬多少個客戶機的連線,更加形象的就是說設定多少轟炸的執行緒數。一般填寫 500 1000,因為這個執行緒數...
壓力測試工具 ab工具
在學習ab工具之前,我們需了解幾個關於壓力測試的概念 吞吐率 requests per second 概念 伺服器併發處理能力的量化描述,單位是reqs s,指的是某個併發使用者數下單位時間內處理的請求數。某個併發使用者數下單位時間內能處理的最大請求數,稱之為最大吞吐率。計算公式 總請求數 處理完成...