postgresql資料庫重要引數說明

datapeng發表於2016-08-18

postgresql重要引數說明
shared_buffers:
這是最重要的引數,相當於oracle的db_cache_size,postgresql透過shared_buffers和核心和磁碟打交道,因此應該儘量大,讓更多的資料快取在shared_buffers中。此引數設定的是按塊為單位的,1表示8k,可以考慮設定到實體記憶體的40%
work_mem:
這是重要的引數,相當於oracle的pga,但與pga有差別,work_mem是每個會話獨自使用的大小,計算評估其大小時,max_connections*work_mem與pga的排序區是相當的。在pgsql8.0之前叫做sort_mem。postgresql在執行排序操作時,會根據work_mem的大小決定是否將一個大的結果集拆分為幾個小的和work_mem查不多大小的臨時檔案。顯然拆分的結果是降低了排序的速度。因此增加work_mem有助於提高排序的速度。根據需要排序結果集的大小而定,單位是KB,比如81920(80M)
effective_cache_size:
這個引數相當於oracle自動儲存管理的max_memory,是postgresql能夠使用的最大快取,這個數字對於獨立的pgsql伺服器而言應該足夠大,可以設定到實體記憶體的80%左右。
maintenance_work_mem:
這裡定義的記憶體只是在CREATE INDEX, VACUUM等時用到,因此用到的頻率不高,但是往往這些指令消耗比較多的資源,因此應該儘快讓這些指令快速執行完畢。可以考慮一般值即可,如有大的調整,臨時調整
max_connections:
通常,max_connections的目的是防止max_connections *work_mem超出了實際記憶體大小。比如,如果將work_mem設定為實際記憶體的2%大小,則在極端情況下,如果有50個查詢都有排序要求,而且都使用2%的記憶體,則會導致swap的產生,系統效能就會大大降低。當然,如果有4G的記憶體,同時出現50個如此大的查詢的機率應該是很小的。
temp_buffers:
稱之為臨時緩衝區,用於資料庫會話訪問臨時表資料,系統預設值為8M。可以在單獨的session中對該引數進行設定,尤其是需要訪問比較大的臨時表時,將會有顯著的效能提升。

最後大家要清楚一點:
max_connections*work_mem+shared_buffers+temp_buffers+maintenance_work_mem+作業系統所需記憶體不能夠超過整個的RAM大小,這是非常重要的。
所以,我們在分配記憶體時,一定要注意。作業系統的保留記憶體,pgsql使用的最大記憶體不要過大。根據記憶體的情況,如果是8G以上的話,一般在85%左右。

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

相關文章