Postgresql之資料庫優化引數設定

2021-08-17 18:56:58 字數 1907 閱讀 2064

比較常見的幾個資料庫引數配置:

1.share_buffer

大的shared_buffers需要大的checkpoint_segments,同時需要申請更多的system v共享記憶體資源. 並且增加共享記憶體管理的開銷.

這個值不需要設的太大, 因為postgresql還依賴作業系統的檔案系統cache來提高讀效能, 另外, 寫操作頻繁的資料庫這個設太大反而會增加checkpoint壓力.

在9.4版本中會增加mmap以及huge page table的支援以減少記憶體管理的開銷.

shared_buffers = 512mb

2.maintenance_work_mem

這個值越大, vacuum, create index的操作越快, 當然大到一定程度瓶頸就不在記憶體了, 可能是cpu例如建立索引.

這個值是乙個操作的記憶體使用上限, 而不是一次性分配出去的. 並且需要注意如果開啟了autovacuum, 最大可能有

autovacuum_max_workers*maintenance_work_mem的記憶體被系統消耗掉.

maintenance_work_mem = 512mb

3.vacuum

手動執行vacuum操作時, 預設是沒有停頓執行到底的, 為了防止vacuum操作消耗太多資料庫伺服器硬體資源, 這個值是指vacuum在消耗多少資源後停頓多少時

間,以便其他的操作可以使用更多的硬體資源.

vacuum_cost_delay = 10ms

vacuum_cost_limit = 10000

預設autovacuum就是開啟的, log_autovacuum_min_duration = 0記錄所有的autovacuum操作.

autovacuum = on

log_autovacuum_min_duration = 0

4.bgwriter_delay

預設bgwriter程序執行一次後會停頓200ms再被喚醒執行下一次操作, 當資料庫的寫操作很頻繁的時候, 200ms可能太長, 導致其他程序需要花費過多的時間來進行

bgwriter的操作. 短暫的停頓更利於將shared buffer中的髒塊flush到磁碟, 降低backend 主動flush 以申請共享記憶體的情形. 後面使用explain時會講到.

bgwriter_delay = 10ms

5.wal_level 

如果需要做資料庫wal日誌備份的話至少需要設定成archive級別, 如果需要做hot_standby那麼需要設定成hot_standby, 由於這個值修改需要重啟資料庫, 所以先

設定成archive比較好.

wal_level= archive

6.wal_buffers

wal buffers預設是-1 根據shared_buffers的設定自動調整shared_buffers*3% .最大限制是xlog的segment_size.

wal_buffers = 16384kb

7.checkpoint設定

多少個xlog file產生後開始checkpoint操作,這個值越大, 允許shared_buffer中的被頻繁訪問的髒資料儲存得更久. 一定程度上可以提高資料庫效能. 

但是太大的話會導致在資料庫發生checkpoint的時候需要處理更多的髒資料帶來長時間的io開銷(還要考慮bgwriter的存在).

太小的話會導致產生更多的wal檔案(因為full page writes=on, checkpoint後的第一次塊的改變要寫全塊, checkpoint越頻繁, 越多的資料更新要寫全塊導致產

生更多wal).

checkpoint_segments = 32   (9.6版本中沒找到這個引數)

這個和checkpoint_segments的效果是一樣的, 只是觸發的條件是時間條件.

checkpoint_timeout = 5min

postgresql資料庫調優

選項 預設值說明 是否優化 原因max connections 100允許客戶端連線的最大數目 否因為在測試的過程中,100個連線已經足夠 fsync on強制把資料同步更新到磁碟 是因為系統的io壓力很大,為了更好的測試其他配置的影響,把改引數改為off shared buffers 24mb 決...

postgresql模板資料庫

template0和template1為postgresql資料庫的模板資料庫,新建的資料庫預設使用template1作為模板。template0和template1的區別在於template0無法修改,因此你可以修改template1資料庫以定製新建立的資料庫。template資料庫無法被刪除 d...

postgresql資料庫安裝

安裝並初始化 1 解壓資料庫並放到指定目錄 在opt目錄下 tar xvzf postgresql 10.1 1 linux x64 binaries.tar.gz 解壓出來之後目錄為pgsql 2 mv pgsql usr local pgsql 3 建立pgsql使用者並設定密碼 useradd...