PostgreSQL配置文件參數優化


postgresql.conf文件

1.1 postgresql.conf與postgresql.auto.conf文件

postgresql.auto.conf的優先級高於postgresql.conf,系統會先讀postgresql.auto.conf的參數配置。使用alter system set僅修改postgresql.auto.conf文件的內容,且只有重啟服務后才能讀取到新參數配置,postgresql.conf則是通過文本編輯方式修改。將參數設回 default 時,auto.conf文件的這項配置會被刪除,重新用回 conf 文件的設置。

 

1.2 參數詳解

1.2.1 連接設置

listen_addresses

參數含義:指定數據庫用來監聽客戶端連接的TCP/IP地址。

參數優化:如需接受其他Client的連接請求,需修改為*

max_connections

參數含義:數據庫可以同時建立的最大的客戶端連接的數目。

參數優化:根據業務應用情況和主機配置設置。不宜設置過大,如連接數大於一定數量(與機器配置相關)時,會因為進程上下文的頻繁切換導致性能降低。

查看當前連接數的SQL:SELECT sum(numbackends) FROM pg_stat_database;

1.2.2 內存相關

shared_buffers

參數含義:數據庫共享內存緩沖區大小,決定有多少內存可以被PostgreSQL用於緩存數據,該緩沖區為所有連接共用。

參數優化:服務器內存較小時設置為服務器內存的25%-40%,內存較大時可適當設置。

work_mem

參數含義:內部排序和哈希操作可使用的工作內存大小。

參數優化:全局設置此參數可能會導致內存使用率過高,即當同時有多個會話進行排序操作時,每個會話會分配到這個參數大小的內存。設置不宜過大。如果要使用語句中有較大的排序操作,可以在會話級別設置該參數(如:set work_men = ‘2GB’)。

wal_buffers

參數含義:WAL(預寫日志)記錄寫入的緩沖區的大小。PostgreSQL將其WAL(預寫日志)記錄寫入緩沖區,然后將這些緩沖區刷新到磁盤。

參數優化:當單事務的數據修改量很大,產生的日志大於wal_buffers時,可適當調大該值。當有比較多的並發短事務時,可與參數commit_delay及commit_siblings連用,並適當調大該值。

commit_delay

參數含義:事務提交后,日志寫到wal_buffer上到wal_buffer寫到磁盤的時間間隔。

參數優化:當有比較多的並發短事務時,可以適當增加該值,使日志緩沖區一次刷盤可以刷出較多的事務,減少IO次數,提高性能。需要和commit_sibling配合使用。

commit_siblings

參數含義:觸發commit_delay等待的並發事務數,即系統的並發活躍事務數達到了該值,事務才會等待commit_delay的時間后才將日志刷新到磁盤。

參數優化:若系統中並發活躍事務達不到該值,commit_delay將不起作用,為防止在系統並發壓力較小的情況下事務提交后空等其他事務,不宜設置過大。

effective_cache_size

參數含義:除操作系統本身和其他應用程序可用的內存外,期望操作系統和數據庫本身可用於緩存數據的內存大小。和shared_buffer等內存無關,只是給優化器生成計划使用的一個假設值。

參數優化:如果設置有誤會影響優化器的判斷,得出不合理的執行計划。建議的設置為可用空閑內存的25%。

maintenance_work_mem

參數含義:執行vacuum ,create index,alter table add foreign key,restoring database dumps等操作時可使用的內存大小。

參數優化:由於這類操作並發數不會很大,增大此參數相對較為安全,如希望提升這些操作的性能,可適當加大此參數。



作者:871a6bb90070
鏈接:https://www.jianshu.com/p/ffee8939e2ed
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM