2017-05-31 79 views
1

我正在使用postgres服務器9.4。 從pg_admin或psql工具,我可以做SHOW ALL;這將給我postgres服務器的配置。例如shared_buffers is 8GBeffective_cache_size is 24GBPostgres資源使用統計和配置

最近數據庫變大,查詢變慢。 我知道查詢可能需要使用explain重新評估。

拋開查詢優化,我如何知道使用狀態? 例如,從這個shared_buffer 8GB或effective_cache_size的24GB正在使用多少或任何其他配置值 - 是時候增加這些配置值了?

回答

1

https://www.postgresql.org/docs/current/static/runtime-config-resource.html

的shared_buffers = 8GB已經是巨大的價值,你可以用https://www.postgresql.org/docs/current/static/pgbuffercache.html 檢查它在一定的水平如果你仍然覺得這是不夠的,記住,你可能需要增加max_wal_size。在9.4或9.5之前(不確定,它確定發生在9.3上)流式複製從設備只使用一個內核來掃描未使用的已刪除頁面的shared_buffers,因此具有大shared_buffers的服務器非常滯後。反對增加的這兩個論點來自頭頂。

更改effective_cache_size是更令人驚訝的想法。通常它從一開始就設置爲最大值。因爲它基本上告訴規劃者他可以指望多少內存。因此,如果您安裝消耗RAM的新軟件,則可能需要減少它,如果向計算機添加更多RAM,則可能會增加。否則 - 爲什麼計劃者應該期望更多的RAM可用於查詢?..

以上是我對這兩個配置的個人謙虛經驗。回答你的問題,我會說試試pg_buffercache檢查shared_buffers的使用情況,並檢查執行計劃set effective_cache_size to some_bigger_value - 如果你看到Postgres開始使用索引,它沒有使用更小的值和執行速度 - 現在是增加集羣智慧的時候了。