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

恒訊科技介紹:PostgreSQL服務器配置的參數(shù)指南
評論