Postgresql
為什麼更多的記憶體不一定會使 Postgres 的性能更高?
Postgres資源消耗文件狀態,位於
shared_buffers
:…分配超過 40% 的 RAM 給 shared_buffers 不太可能比較小的數量更好。
為什麼是這樣?我總是被告知伺服器擁有的 RAM 越多,Postgres 的性能就越好。不是
shared_buffers
Postgres 的典型記憶體設置嗎?如果我只在我的伺服器中分配 3GB 的 12GB(建議的 25% 起點)給shared_buffers
,我在哪裡可以期望 Postgres 至少多利用 6GB?
事實上,
effective_cache_size
加上shared_buffers
可以更恰當地被認為是典型的記憶體設置。保持shared_buffers
低一點(例如,25%)很有用,因為 Postgres 也依賴於作業系統記憶體,這可能會導致 OP 中其他“6GB”RAM 的使用。根據Postgres 官方“調整”頁面,設置
effective_cache_size
為總記憶體的一半被認為是保守的。但是,這不是記憶體分配,而是幫助 Postgres 根據可用內容計劃查詢的指南。另請注意,稍微低估 Postgres 的資源可能會有所幫助,為未來的擴展留出一些喘息的空間。想像一下,您的 Postgres 伺服器經過優化,可以 100% 地利用您機器中的所有物理資源,然後您達到了伺服器的極限。在這一點上,您幾乎無法避免災難(例如,交換、極端性能下降等),因此當您需要一周的時間來升級伺服器時,留出一點迴旋餘地會派上用場。