PostgreSQ服務器配置參數在優化和增強數據庫性能方面發揮著重要作用。PostgreSQL的主要可調設置位于名為 postgresql.conf 的純文本文件中,該文件位于數據庫目錄結構的底部。這些配置參數中的大多數大致分為以下幾類:
1、數據庫連接參數
2、記錄參數
3、內存參數
下面,小編就詳細給大家介紹一下PostgreSQL服務器配置的參數指南。
一、連接參數
有許多配置參數可以控制人們如何遠程和本地連接到數據庫。
1、監聽地址
任何需要從遠程系統連接的安裝都需要更改listen_addresses以允許連接。默認情況下僅允許來自登錄到與數據庫服務器相同系統的用戶的本地連接。一種常見的方法是接受來自任何地方的傳入連接——就主配置文件而言,如下所示:listen_addresses = '*'
2、最大連接數
Max_connections是我們在initdb生成的postgresql.conf中總是會發現設置為一個值的設置之一,通常為100。因為每個連接都使用少量的共享內存,所以共享內存默認值特別有限的系統甚至可能不允許這么多連接。因此,在創建數據庫集群時,initdb會進行一些調查,然后將支持的最大值(最多100)保存到默認配置中。實際上,每個客戶端用于諸如排序之類的事情的非共享內存量將使它相形見絀,但不能完全忽略共享組件。
重要的是不要將此參數設置為比您需要的值高得多的值。較大的設置有幾個缺點。第一個是浪費的共享內存,通常是最后一個要關注的事情,因為每個連接的數量很小。
二、記錄參數
常規日志記錄設置至關重要,因為日志記錄在調試錯誤、警告和其他系統問題中起著至關重要的作用。我們可能需要設置log_destination、log_directory和log_filename等參數,以符合我們環境的系統管理要求的方式保存我們的日志文件。在大多數系統上,這些都將設置為合理的默認值以開始使用。在類UNIX系統上,一些數據庫日志記錄通常在啟動和停止服務器的腳本中設置,而不是直接在postgresql.conf 文件中設置。
1、log_line_prefix
默認的log_line_prefix參數是空的,一個好的起始值如下:
這會將以下內容放入每個日志行:
%t:時間戳%u:數據庫用戶名%r:遠程主機連接%d:數據庫%p:連接的進程ID
2、日志語句
語句日志記錄是一種用于查找性能問題的強大技術。分析log_statement保存的信息和語句級詳細信息的相關來源可以揭示許多類型的性能問題的真正來源。此設置的選項如下:
none:不記錄任何語句級信息。
ddl:僅記錄數據定義語言(DDL)語句,例如CREATE和DROP。這通常可以保留,即使在生產中,也可以用于捕獲管理員無意或有意引入的重大更改。
mod:記錄任何修改值的語句,除了簡單的SELECT語句外,它基本上是所有內容。如果我們的工作負載主要是基于SELECT且數據更改相對較少,則始終啟用此功能可能很實用。
all:記錄每條語句。由于日志記錄的開銷,這在生產中通常是不切實際的。但是,如果我們的服務器相對于它的工作負載來說足夠強大,那么讓它一直保持運行可能是可行的。
log_min_duration_statement
一旦我們對執行典型的查詢語句需要多長時間有了一些了解,此設置允許您僅記錄超過我們設置的閾值的語句。該值以毫秒為單位,因此我們可以設置以下內容:
log_min_duration_statement=1000
這樣,我們將只會看到運行時間超過1秒的語句。這對于找出比大多數執行時間長得多的離群語句的來源非常方便。
三、內存參數
數據庫組件需要內存來緩存頻繁訪問的數據、事務日志和排序數據。因此,正確調整內存參數至關重要,因為它可以幫助優化數據庫性能。
1、共享緩沖區
該參數的值定義了PostgreSQL共享緩沖池的大小。換句話說,此參數控制PostgreSQL用于緩存數據的內存量。128 MB的默認值對于任何現實世界的工作負載來說都非常低,需要加強。此值應根據數據集大小設置,數據庫服務器應該在峰值負載和可用RAM的基礎上處理。事實上的經驗法則是,在RAM超過1GB的系統上,此參數的合理值約為系統內存的四分之一。此參數的值也可以設置為更大的值,并且理想情況下有效的最大設置為可用RAM的40%。但是將它增加到超過該限制可能不會有效,因為PostgreSQL也依賴于操作系統緩存來進行操作。較大的shared_buffers參數值意味著增加 checkpoint_segments 值,以便在一段時間內分散寫入大量新數據或更改數據的過程。此值只能在服務器啟動時設置。
2、臨時緩沖區
此參數定義每個數據庫會話用于緩存臨時表數據的內存量。這些基本上是會話本地緩沖區,僅用于訪問臨時表。在Postgresql版本9.4中,此參數的默認值為八,并且此設置可以在單個會話中更改,但只能在會話中首次使用臨時表之前更改。任何后續更改該值的嘗試都不會影響現有會話。
3、維護工作內存
此參數定義維護操作使用的最大內存量,即VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY 操作需要更多工作內存。要注意的是,這些會話中的許多會話不太可能同時執行這些操作,因此可以將此值設置為比標準每個客戶端work_mem設置大得多的值。在PostgreSQL 版本9.4中,此參數的默認值設置為64MB。這里需要注意的一點是,當autovacuum運行時,autovacuum_max_workers的值分配此內存的次數。從優化的角度并考慮到沒有增加autovacuum worker的數量,一個好的配置設置是將其設置為系統總內存的5%左右,這樣即使五個這樣的進程也不會超過可用內存的四分之一記憶。這大約相當于每GB服務器系統內存50 MB的maintenance_work_mem。
以上是PostgreSQL服務器配置的參數指南介紹,希望能幫助到大家參考!
審核編輯:湯梓紅
-
服務器
+關注
關注
12文章
9123瀏覽量
85331 -
內存
+關注
關注
8文章
3019瀏覽量
74007 -
數據庫
+關注
關注
7文章
3794瀏覽量
64362 -
postgresql
+關注
關注
0文章
21瀏覽量
211
發布評論請先 登錄
相關推薦
評論