postgres 性能參數調整

http://www.91linux.com/html/article/database/PostgreSQL/20080331/10283.html


本人現在開發的所有項目都使用postgresql,應用下來對它很是滿意,現就影響postgresql性能的幾個重要參數介紹如下,希望對PG的初學者有所幫助,如果你在實際應用中遇到什麼問題,可給我留言,我們一起解決:
PG的配置文件是數據庫目錄下的postgresql.conf文件,8.0以後的版本可支持K,M,G這樣的參數,只要修改相應參數後重新啓動PG服務就OK了。

shared_buffers:這是最重要的參數,postgresql通過shared_buffers和內核和磁盤打交道,因此應該儘量大,讓更多的數據緩存在shared_buffers中。通常設置爲實際RAM的10%是合理的,比如50000(400M)

work_mem: 在pgsql 8.0之前叫做sort_mem。postgresql在執行排序操作時,會根據work_mem的大小決定是否將一個大的結果集拆分爲幾個小的和 work_mem查不多大小的臨時文件。顯然拆分的結果是降低了排序的速度。因此增加work_mem有助於提高排序的速度。通常設置爲實際RAM的2% -4%,根據需要排序結果集的大小而定,比如81920(80M)

effective_cache_size:是postgresql能夠使用的最大緩存,這個數字對於獨立的pgsql服務器而言應該足夠大,比如4G的內存,可以設置爲3.5G(437500)

maintence_work_mem:這裏定義的內存只是在CREATE INDEX, VACUUM等時用到,因此用到的頻率不高,但是往往這些指令消耗比較多的資源,因此應該儘快讓這些指令快速執行完畢:給maintence_work_mem大的內存,比如512M(524288)

max_connections: 通常,max_connections的目的是防止max_connections * work_mem超出了實際內存大小。比如,如果將work_mem設置爲實際內存的2%大小,則在極端情況下,如果有50個查詢都有排序要求,而且都使用2%的內存,則會導致swap的產生,系統性能就會大大降低。當然,如果有4G的內存,同時出現50個如此大的查詢的機率應該是很小的。不過,要清楚 max_connections和work_mem的關係。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章