BenchMarkSQL 5.0測試PostgreSQL


簡介

BenchmarkSQL是一款經典的開源數據庫測試工具,內嵌了TPCC測試腳本,可以對PostgreSQL、Oracle以及Firebird等數據庫進行測試.。

TPC-C 於 1992 年 7 月 23 日認可為新的基准測試。TPC(Transaction Processing Performance Council,事務處理性能委員會)-C是衡量聯機事務處理(OLTP,Online TransactionProcessing)系統的工業標准,是行業中公認的權威和最為復雜的在線事務處理基准測試。它通過模擬倉庫和訂單管理系統,測試廣泛的數據庫功能,包括查詢、更新和  mini-batch事務(隊列式小批量事務)。TPC-C基准測試針對一種模擬訂單錄入與銷售環境測量每分鍾事務(tpmC-transactions per minute)吞吐量。

測試模型

測試用到的模型是一個大型的批發銷售公司,在地理分布的多個區域有業務,並且使用倉庫管理。當業務擴展的時候,公司將添加新的倉庫。每個倉庫負責十個區域的供貨,每個區域 3000 個客戶服務,每個倉庫維護 100000 種商品的庫存紀錄。

 

 

TPC-C 標准測試模擬了 5 種事務處理,通過這些事務處理來模擬真實的用戶操作,事務分別為新訂單(New-Order)、支付操作(Payment)、訂單狀態查詢(Order-Status)、發貨(Delivery)、庫存狀態查詢(Stock-Level)。下面將對其執行的事務內容及特點進行詳細介紹.

1.新訂單(New-Order)

事務內容:對於任意一個客戶端,從固定的倉庫隨機選取 5-15  件商品,創建新訂單.其中 1%的訂單要由假想的用戶操作失敗而回滾。

主要特點:中量級、讀寫頻繁、要求響應快.

2.支付操作(Payment)

事務內容:對於任意一個客戶端,從固定的倉庫隨機選取一個轄區及其內用戶,采用隨機的金額支付一筆訂單,並作相應歷史記錄。

主要特點:輕量級,讀寫頻繁,要求響應快

3.訂單狀態查詢(Order-Status)

事務內容:對於任意一個客戶端,從固定的倉庫隨機選取一個轄區及其內用戶,讀取其最后一條訂單,顯示訂單內每件商品的狀態。

主要特點:中量級,只讀頻率低,要求響應快

4.發貨(Delivery)

事務內容:對於任意一個客戶端,隨機選取一個發貨包,更新被處理訂單的用戶余額,並把該訂單從新訂單中刪除.

主要特點:1-10 個批量,讀寫頻率低,較寬松的響應時間

5.庫存狀態查詢(Stock-Level)

事物內容:對於任意一個客戶端,從固定的倉庫和轄區隨機選取最后 20 條訂單,查看訂單中所有的貨物的庫存,計算並顯示所有庫存低於隨機生成域值的商品數量.

主要特點:重量級,只讀頻率低,較寬松的響應時間.

演示環境

PostgreSQL:13.0

OS:CentOS 8

openjdk version "1.8.0_292"

ant:1.10.5

benchmarksql:5.0

獲取版本

訪問官網獲取最新版本benchmarksql-5.0.zip

https://sourceforge.net/projects/benchmarksql/

編譯
unzip benchmarksql-5.0.zip
ant
配置參數

進入run目錄,配置如下參數

vi props.pg

db=postgres
driver=org.postgresql.Driver
conn=jdbc:postgresql://localhost:5432/postgres
user=benchmarksql
password=PWbmsql

warehouses=1
loadWorkers=4

terminals=1
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=10
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=0
//Number of total transactions per minute
limitTxnsPerMin=300

//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true

//The following five values must add up to 100
//The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4

// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
osCollectorDevices=net_eth0 blk_sda

主要參數解釋如下

參數 說明
db postgres 指定數據庫類型(修改后增加的數據庫類型)
driver org.postgresql.Driver 數據庫的驅動類名稱,不需要更改
conn

jdbc:postgresql://localhost:5432/postgres

連接字符串,需要更改localhost為對應pg服務IP、5432位對應pg服務端口、postgres為對應測試數據庫名
user postgres 用戶名
password 123456 用戶密碼
warehouses 10 初始化加載數據時,需要創建多少倉庫的數據。每倉庫約80MB數據,數量根據實際服務器內存配置。
loadWorkers 4 表示加載數據時,開啟加載數據的進程數,加載速度會隨worker數量的增加而有所提升。
terminals 20 終端數量,指同時有多少終端並發執行,通常設置為CPU線程總數的2~6倍
runTxnsPerTerminal 0 每個終端(terminal)運行的固定事務數量,例如:如果該值設置為10,意味着每個terminal運行10個事務,如果有32個終端,那整體運行320個事務后,測試結束。該參數配置為非0值時,下面的runMins參數必須設置為0
runMins 1 要測試的整體時間,單位為分鍾,如果runMins設置為60,那么測試持續1小時后結束。該值設置為非0值時,runTxnsPerTerminal參數必須設置為0。這兩個參數不能同時設置為正整數,如果設置其中一個,另一個必須為0,主要區別是runMins定義時間長度來控制測試時間;runTxnsPerTerminal定義事務總數來控制時間。
limitTnxsPermin 0 限制每分鍾執行的事務總數。0表示不限制
terminalWarehouseFixed true 用於指定終端和倉庫的綁定模式,設置為true時可以運行4.x兼容模式,意思為每個終端都有一個固定的倉庫。設置為false時可以均勻的使用數據庫整體配置,TPCC規定每個終端都必須有一個綁定的倉庫,所以一般使用默認值true。

 

數據准備

創建數據庫表並加載數據

./runDatabaseBuild.sh props.pg
執行測試

執行如下命令開始測試

./runBenchmark.sh props.pg

 測試完后會顯示簡要的測試結果,包括平均tpmC值(每分鍾執行的事務數--每分鍾能夠處理的訂單數量),tpmTOTAL(總訂單量)等等。

流量指標(Throughput,簡稱tpmC):按照TPC組織的定義,流量指標描述了系統在執行支付操作、訂單狀態查詢、發貨和庫存狀態查詢這4種交易的同時,每分鍾可以處理多少個新訂單交易。所有交易的響應時間必須滿 足TPC-C測試規范的要求,且各種交易數量所占的比例也應該滿足TPC-C測試規范的要求。在這種情況下,流量指標值越大說明系統的聯機事務處理能力越高。

生成報告

生成圖形的腳本generateReport.sh要求操作系統環境中已經安裝了R語言

./generateReport.sh my_result_2021-05-23_175724

可以通過html查看生成的報告

重新運行測試

執行runDatabaseDestroy.sh腳本帶配置文件可以將所有的數據和表都刪除,然后再重新修改配置后運行測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM