PostgreSQL BenchmarkSQL使用

格來羙、日出發表於2020-10-12

1、安裝PostgreSQL資料庫

2、下載解壓benchmark外掛

官網下載地址:https://sourceforge.net/projects/benchmarksql/files/latest/download

3、安裝ant外掛

yum install ant

使用ant對BenchmarkSQL原始碼進行編譯

4、修改benchmark配置檔案

/benchmarksql-5.0/run/props.pg

warehouses=1    //倉庫數量,每個warehouse大小大概是100MB
loadWorkers=4    //用於在資料庫中初始化資料的載入程式數量
terminals=1    //終端數,即併發客戶端數量

//To run specified transactions per terminal- runMins must equal zero
//每個終端(terminal)執行的固定事務數量,例如:如果該值設定為10,意味著每個terminal執行10個事務,如果有32個終端,那整體執行320個事務後,測試結束。該引數配置為非0值時,下面的runMins引數必須設定為0
runTxnsPerTerminal=10

//To run for specified minutes- runTxnsPerTerminal must equal zero
//要測試的整體時間,單位為分鐘,如果runMins設定為60,那麼測試持續1小時候結束。該值設定為非0值時,runTxnsPerTerminal引數必須設定為0。這兩個引數不能同時設定為正整數,如果設定其中一個,另一個必須為0,主要區別是runMins定義時間長度來控制測試時間;runTxnsPerTerminal定義事務總數來控制時間。
runMins=0

//Number of total transactions per minute
測試吞吐量時,需要將此值設定極大(無限大),這樣就能夠保證不會出現某個終端sleep現象。

//每分鐘事務總數限制,該引數主要控制每分鐘處理的事務數,事務數受terminals引數的影響,如果terminals數量大於limitTxnsPerMin值,意味著併發數大於每分鐘事務總數,該引數會失效,想想也是如此,如果有1000個併發同時發起,那每分鐘事務數設定為300就沒意義了,上來就是1000個併發,所以要讓該引數有效,可以設定數量大於併發數,或者讓其失效,測試過程中目前採用的是預設300。
limitTxnsPerMin=300

 //終端和倉庫的繫結模式,設定為true時可以執行4.x相容模式,意思為每個終端都有一個固定的倉庫。設定為false時可以均勻的使用資料庫整體配置。TPCC規定每個終端都必須有一個繫結的倉庫,所以一般使用預設值true。
terminalWarehouseFixed=true

//下面五個值的總和必須等於100,預設值為:45, 43, 4, 4 & 4 ,與TPC-C測試定義的比例一致,實際操作過程中,可以調整比重來適應各種場景。
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4

//測試資料生成目錄,預設無需修改,預設生成在run目錄下面,名字形如my_result_xxxx的資料夾。
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS

//作業系統效能收集指令碼,預設無需修改,需要作業系統具備有python環境
osCollectorScript=./misc/os_collector_linux.py

//作業系統收集操作間隔,預設為1秒
osCollectorInterval=1

//作業系統收集所對應的主機,如果對本機資料庫進行測試,該引數保持登出即可,如果要對遠端伺服器進行測試,請填寫使用者名稱和主機名。
osCollectorSSHAddr=user@dbhost

//作業系統中被收集伺服器的網路卡名稱和磁碟名稱,例如:使用ifconfig檢視作業系統網路卡名稱,ens33,那麼下面網路卡名設定為net_ens33(net_字首固定);使用df -h或者fdisk -l 檢視磁碟掛在目錄,我DIsk是/dev/sda,那麼下面磁碟名設定為blk_sda(blk_字首固定)
osCollectorDevices=net_eth0 blk_sda

5、建立表和約束

./runDatabaseBuild.sh props.pg 

查詢庫大小

select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datname)) AS size from pg_database; 

 

使用了1倉資料

6、跑測試,並生成結果

./runBenchmark.sh props.pg

7、刪除表

./runDatabaseDestroy.sh props.pg

資料量比較大建議刪除data目錄

相關文章