pgbench
是一個用于測試 PostgreSQL 數據庫性能的基準測試工具。通過模擬多個客戶端并發執行 SQL 查詢,它可以幫助你評估數據庫的性能。以下是使用 pgbench
的基本步驟:
安裝 pgbench
pgbench
是 PostgreSQL 的一部分,因此在安裝 PostgreSQL 時通常也會包含它。在大多數 Linux 發行版上,你可以通過包管理器安裝 PostgreSQL:
# 對于 Ubuntu/Debian 系統
sudo apt-get install postgresql-contrib# 對于 CentOS/RHEL 系統
sudo yum install postgresql-contrib
基本用法
-
初始化測試數據庫:首先,必須初始化一個測試數據庫。在進行這個步驟之前,請確保數據庫服務器正在運行,并且你具有足夠的權限創建數據庫。
export PGPASSWORD='<dbpassword>' pgbench -i -s <scaling factor> -h <server_ip> -p <port> -U <username> -d <dbname>例如: export PGPASSWORD='pgbench' pgbench -i -s 10 -h 192.168.0.1 -p 5432 -U pgbench -d pgbench_test
-
運行基準測試:初始化后,可以運行基準測試。以下是一些常用選項:
export PGPASSWORD='<dbpassword>' pgbench -h <server_ip> -p <port> -U <username> -d <dbname> -c 10 -j 2 -T 60例如: export PGPASSWORD='pgbench' pgbench -h 192.168.0.1 -p 5432 -U pgbench -d pgbench_test -c 10 -j 2 -T 60-h <server_ip>:服務器 A 的 IP 地址。 -p <port>:PostgreSQL 服務器的端口號(默認是 5432)。 -U <username>:連接到數據庫的用戶名。 -d <dbname>:數據庫名稱。 -c 10:使用 10 個客戶端。 -j 2:使用 2 個線程。 -T 60:測試運行時間為 60 秒。
示例輸出
-
運行
pgbench
命令后,類似的輸出信息如下:starting vacuum...end. transaction type: TPC-B (sort of) scaling factor: 10 query mode: simple number of clients: 10 number of threads: 2 duration: 60 s number of transactions actually processed: 28290 latency average = 21.230 ms latency stddev = 3.119 ms initial connection time = 1.506 ms tps = 471.200 (without initial connection time)transaction type: 測試使用的事務類型,通常是 TPC-B 風格的基準測試。 scaling factor: 數據的規模因子。在初始化數據庫時使用的,影響了數據集的大小。 query mode: 查詢模式(simple 或 extended)。 number of clients: 模擬的客戶端數量。決定了并發加載的水平。 number of threads: 使用的線程數。線程數可以優化性能,尤其在多核機器上。 duration: 測試的運行時間(秒)。 number of transactions actually processed: 實際處理的事務總數。 latency average: 每個事務的平均延遲時間(毫秒)。延遲時間越低,性能越好。 latency stddev: 延遲時間的標準差,反映出延遲的波動性或一致性。 initial connection time: 測試開始時與數據庫的初始連接時間。 tps (transactions per second): 每秒事務數,不包含初始連接時間。在評估數據庫的事務處理能力時,TPS 是一個重要指標,數值越高表示性能越好。
注意事項
-
TPS (事務處理能力) 是非常重要的指標。通常希望在負載增加時 TPS 能夠線性增加。如果 TPS 隨著負載增加而下降,則可能存在瓶頸。
-
延遲 (Latency) 也需要關注,尤其在需要低延遲的應用中。
-
如果需要產生更詳細的分析(如 per-client latency 報告),可使用
--progress
選項來獲取按間隔時間的中間統計數據。也可以選用--log
選項使pgbench
保存詳細日志以供進一步分析。