postgresql:pgbench基準效能測試

jaymarco發表於2020-12-08

一、pgbench介紹

pgbench -- 在PostgreSQL上執行一個基準測試

pgbench是一種在PostgreSQL上執行基準測試的簡單程式。它可能在併發的資料庫會話中一遍一遍地執行相同序列的 SQL 命令,並且計算平均事務率(每秒的事務數)。預設情況下,pgbench會測試一種基於 TPC-B 但是要更寬鬆的場景,其中在每個事務中涉及五個 SELECT UPDATE 以及 INSERT 命令。但是,透過編寫自己的事務指令碼檔案很容易用來測試其他情況。

pgbench的典型輸出像這樣:

transaction type: <builtin: TPC-B (sort of)>

scaling factor: 10
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 85.184871 (including connections establishing)
tps = 85.296346 (excluding connections establishing)

前六行報告一些最重要的引數設定。接下來的行報告完成的事務數以及預期的事務數(後者就是客戶端數量與每個客戶端事務數的乘積),除非執行在完成之前失敗,這些值應該是相等的(在 -T 模式中,只有實際的事務數會被列印出來)。最後兩行報告每秒的事務數,分別代表包括和不包括開始資料庫會話所花時間的情況。

二、pg基準測試過程

pgbench初始化測試庫

pgbench -i會建立四個表pgbench_accounts、 pgbench_branches、pgbench_history以及pgbench_tellers,如果同名表已經存在會被先刪除。如果你已經有同名表,一定注意要使用另一個資料庫!

pgbench -i -s 1000 postgres -Ut_user

在預設的情況下 "比例因子" 為 1,這些表初始包含的行數為:

table                   # of rows

---------------------------------
pgbench_branches        1
pgbench_tellers         10
pgbench_accounts        100000
pgbench_history         0

#32個併發32個執行緒

pgbench -Ut_user  -M prepared -r -P 1 -c 32 -j 32 -T 300  postgres

#64個併發64個執行緒

pgbench -Ut_user  -M prepared -r -P 1 -c 64 -j 64 -T 300  postgres


#100個併發100個執行緒

pgbench -Ut_user  -M prepared -r -P 1 -c 100 -j 100 -T 300  postgres

#200個併發200個執行緒

pgbench -Ut_user  -M prepared -r -P 1 -c 200 -j 200 -T 300  postgres


三、測試結果

經過5輪場景測試結果反應不理想,事務延遲較高,200個併發使用者磁碟讀等待8ms,導致TPS上不去,IO等待原因可能是儲存效能瓶頸。主機側反饋當前儲存採用的RAID5,導致儲存效能下降。常規資料庫使用的儲存raid都採用的raid10,建議調整儲存的raid方式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2740262/,如需轉載,請註明出處,否則將追究法律責任。

相關文章