Postgresql

PostgreSQL 中的選項 shared_buffers

  • May 11, 2011

我在 Centos 5 上有一台具有 4GB RAM 和 PostgreSQL 9.0.3 的伺服器。我正在使用pgbenchpgbench-tools使用兩個pgbench-tools查詢來測量性能:selecttpc-b.

使用預設設置postgresql.conf並使用選擇查詢,我得到以下結果:

規模:1、10、100、1000

。每秒事務數:10000、8800、7500、100。

(表的記錄數為scale*100000)

我將選項shared_buffer增加到 256MB(以前是 32MB),我得到以下結果:

規模:1、10、100、1000。

每秒事務數:10000、8000、3200、30

為什麼在第二個基準測試中規模為 100 或更多時與**第一個測試相比性能如此低?**我唯一做的就是增加記憶體。

當您增加 shared_buffers 時,唯一始終使 pgbench 變慢的是一個稱為斷言檢查的調試選項。如果你在 psql 中這樣做:

show debug_assertions;

它開啟了,你的建構有這個問題,你看到的結果是預期的。您需要一個未啟用斷言調試的新安裝才能消除這種情況。

否則,如果您不多次執行所有這些操作,我就不能確定這裡的原因是 shared_buffers 更改。舉個例子,如果 autovacuum 恰好在你的大型數據庫執行時執行,它會降低測試結果。測試開始時開始的檢查點也將開始。關閉 autovacuum 以將其從測試中消除,並打開 log_checkpoints 以查看它是否有乾擾。

第三種可能性,我幾乎可以肯定你在某種程度上受到了影響,那就是在磁碟上移動的東西會導致結果減慢 50%。磁碟在早期部分的速度大約是後期部分的兩倍,並且當您重複執行 pgbench 時,數據將隨著您移動到較慢的部分。我最終重建了整個文件系統以獲得可重複的結果,這是確保您從驅動器上的同一點開始的唯一方法。這不會影響較小規模的結果,因為它們都適合 RAM。

當我在觸摸配置參數後看到性能變化時,我總是再次嘗試原始配置以確保這是原因。我經常驚訝地發現每次執行測試都會變慢,磁碟位置速度差異是導致該問題的一個原因。

引用自:https://serverfault.com/questions/264903