client_min_messages
(enum
) #控制哪些訊息層級會傳送到用戶端。有效值為 DEBUG5
、DEBUG4
、DEBUG3
、DEBUG2
、DEBUG1
、LOG
、NOTICE
、WARNING
和 ERROR
。每個層級都包含其後的所有層級。層級越晚,傳送的訊息越少。預設值為 NOTICE
。請注意,LOG
在此處的排序與在 log_min_messages 中不同。
INFO
層級的訊息始終傳送到用戶端。
search_path
(string
) #此變數指定在參照物件(表格、資料類型、函式等)時,如果只使用簡單名稱而未指定綱要,則搜尋綱要的順序。當不同綱要中存在同名的物件時,將使用在搜尋路徑中首先找到的物件。未在搜尋路徑中的任何綱要中的物件只能透過使用帶有限定(點)名稱的包含綱要來參照。
search_path
的值必須是用逗號分隔的綱要名稱清單。任何不是現有綱要的名稱,或使用者沒有 USAGE
權限的綱要,都將被靜默忽略。
如果清單項目之一是特殊名稱 $user
,則將替換由 CURRENT_USER
傳回的名稱的綱要(如果存在這樣的綱要且使用者對其具有 USAGE
權限)。(如果沒有,則忽略 $user
。)
系統目錄綱要 pg_catalog
始終會被搜尋,無論它是否在路徑中提及。如果它在路徑中提及,則將按照指定的順序搜尋它。如果 pg_catalog
不在路徑中,則將在搜尋任何路徑項目之前搜尋它。
同樣地,目前會話的暫存表格綱要 pg_temp_
,如果存在,則始終會被搜尋。可以使用別名 nnn
pg_temp
在路徑中明確列出它。如果未在路徑中列出,則將首先搜尋它(甚至在 pg_catalog
之前)。但是,僅針對關聯(表格、視窗、序列等)和資料類型名稱搜尋暫存綱要。永遠不會搜尋函式或運算子名稱。
當建立物件而不指定特定目標綱要時,它們將被放置在 search_path
中命名的第一個有效綱要中。如果搜尋路徑為空,則會報告錯誤。
此參數的預設值為 "$user", public
。此設定支援資料庫的共用使用(其中沒有使用者擁有私有綱要,並且所有人都共用 public
的使用)、每個使用者的私有綱要以及這些的組合。可以透過變更預設搜尋路徑設定(全域或按使用者)來獲得其他效果。
有關綱要處理的更多資訊,請參閱第 5.10 節。特別是,預設配置僅在資料庫具有單一使用者或幾個相互信任的使用者時才適用。
可以透過以下方式檢查搜尋路徑的目前有效值SQL函式 current_schemas
(請參閱第 9.27 節)。這與檢查 search_path
的值並不完全相同,因為 current_schemas
顯示了 search_path
中出現的項目是如何解析的。
row_security
(boolean
) #這個變數控制是否要引發錯誤來取代套用資料列安全性原則。當設定為 on
時,原則會正常套用。當設定為 off
時,若查詢會套用至少一個原則,則查詢會失敗。預設值為 on
。在有限的資料列可見性可能導致不正確結果時,請變更為 off
;例如,pg_dump 預設會進行此變更。這個變數對略過每個資料列安全性原則的角色沒有影響,也就是具有 BYPASSRLS
屬性的超級使用者和角色。
有關資料列安全性原則的更多資訊,請參閱 CREATE POLICY。
default_table_access_method
(string
) #此參數指定建立表格或實體化檢視表時要使用的預設表格存取方法,如果 CREATE
指令沒有明確指定存取方法,或者當使用 SELECT ... INTO
時,該指令不允許指定表格存取方法。預設值為 heap
。
default_tablespace
(string
) #這個變數指定在 CREATE
指令沒有明確指定資料表空間時,要於其中建立物件(表格和索引)的預設資料表空間。
這個值可以是資料表空間的名稱,或者是一個空字串,以指定使用目前資料庫的預設資料表空間。如果這個值與任何現有資料表空間的名稱不符,PostgreSQL 將會自動使用目前資料庫的預設資料表空間。如果指定了非預設資料表空間,使用者必須擁有它的 CREATE
權限,否則建立嘗試將會失敗。
這個變數不適用於暫存表格;對於暫存表格,會改為參考 temp_tablespaces。
這個變數也不用於建立資料庫。預設情況下,新的資料庫會繼承其範本資料庫的資料表空間設定,也就是它所複製自的範本資料庫。
如果在建立分割表格時,此參數設定為非空字串值,則分割表格的資料表空間將設定為該值,該值將用作未來建立的分割區的預設資料表空間,即使之後 default_tablespace
發生變更。
有關資料表空間的更多資訊,請參閱 第 22.6 節。
default_toast_compression
(enum
) #這個變數設定可壓縮欄位值的預設 TOAST 壓縮方法。(可以透過在 CREATE TABLE
或 ALTER TABLE
中設定 COMPRESSION
欄位選項來覆寫個別欄位的設定。)支援的壓縮方法為 pglz
和(如果 PostgreSQL 是使用 --with-lz4
編譯的)lz4
。預設值為 pglz
。
temp_tablespaces
(string
) #這個變數指定在 CREATE
指令沒有明確指定資料表空間時,要在其中建立暫存物件(暫存表格和暫存表格上的索引)的資料表空間。用於排序大型資料集等目的的暫存檔案也會在這些資料表空間中建立。
這個值是一個資料表空間名稱的清單。當清單中有一個以上的名稱時,PostgreSQL 每次要建立暫存物件時,都會從清單中隨機選擇一個成員;但如果在交易中,連續建立的暫存物件會依序放置在清單中的連續資料表空間中。如果清單中選定的元素是一個空字串,PostgreSQL 將會自動改為使用目前資料庫的預設資料表空間。
當以互動方式設定 temp_tablespaces
時,指定不存在的資料表空間會造成錯誤,指定使用者沒有 CREATE
權限的資料表空間也會造成錯誤。然而,當使用先前設定的值時,不存在的資料表空間會被忽略,使用者沒有 CREATE
權限的資料表空間也會被忽略。特別是,此規則適用於使用在 postgresql.conf
中設定的值時。
預設值是一個空字串,這會導致所有暫存物件都在目前資料庫的預設資料表空間中建立。
另請參閱 default_tablespace。
check_function_bodies
(boolean
) #這個參數通常是開啟的。當設定為 off
時,它會在 CREATE FUNCTION 和 CREATE PROCEDURE 期間停用對常式主體字串的驗證。停用驗證可以避免驗證過程的副作用,特別是可以防止由於向前參考等問題造成的誤判。在代表其他使用者載入函式之前,請將此參數設定為 off
;pg_dump 會自動執行此操作。
default_transaction_isolation
(enum
) #每個 SQL 交易都有一個隔離等級,可以是 “讀取未提交”、“讀取已提交”、“可重複讀取” 或 “可序列化”。這個參數控制每個新交易的預設隔離等級。預設值為 “讀取已提交”。
請參閱 第 13 章 和 SET TRANSACTION 以取得更多資訊。
default_transaction_read_only
(boolean
) #唯讀 SQL 交易無法變更非暫存表格。這個參數控制每個新交易的預設唯讀狀態。預設值為 off
(讀/寫)。
更多資訊請參閱SET TRANSACTION。
default_transaction_deferrable
(boolean
) #當以 serializable
隔離等級執行時,可延遲的唯讀 SQL 交易可能會在允許繼續之前被延遲。 但是,一旦它開始執行,它就不會產生任何確保序列化所需要的額外開銷; 因此,序列化程式碼沒有理由因為並發更新而強制其中止,這使得此選項適用於長時間執行的唯讀交易。
此參數控制每個新交易的預設可延遲狀態。 目前它對讀寫交易或以低於 serializable
的隔離等級運作的交易沒有影響。 預設值為 off
。
更多資訊請參閱SET TRANSACTION。
transaction_isolation
(enum
) #此參數反映目前交易的隔離等級。 在每個交易開始時,它都會設定為 default_transaction_isolation 的目前值。 任何後續更改它的嘗試都等同於 SET TRANSACTION 指令。
transaction_read_only
(boolean
) #此參數反映目前交易的唯讀狀態。 在每個交易開始時,它都會設定為 default_transaction_read_only 的目前值。 任何後續更改它的嘗試都等同於 SET TRANSACTION 指令。
transaction_deferrable
(boolean
) #此參數反映目前交易的可延遲狀態。 在每個交易開始時,它都會設定為 default_transaction_deferrable 的目前值。 任何後續更改它的嘗試都等同於 SET TRANSACTION 指令。
session_replication_role
(enum
) #控制目前會話的複寫相關觸發程序和規則的觸發。 可能的值為 origin
(預設值)、replica
和 local
。 設定此參數會導致捨棄任何先前快取的查詢計畫。 只有超級使用者和具有適當 SET
權限的使用者才能變更此設定。
此設定的預期用途是,當邏輯複寫系統應用複寫的變更時,將其設定為 replica
。 這樣做的效果是,觸發程序和規則(尚未從其預設組態變更)將不會在複本上觸發。 有關更多資訊,請參閱 ALTER TABLE
子句 ENABLE TRIGGER
和 ENABLE RULE
。
PostgreSQL 在內部將設定 origin
和 local
視為相同。 第三方複寫系統可能會將這兩個值用於其內部目的,例如使用 local
來指定不應複寫其變更的會話。
由於外來鍵是作為觸發程序實作的,因此將此參數設定為 replica
也會停用所有外來鍵檢查,如果使用不當,可能會使資料處於不一致的狀態。
statement_timeout
(integer
) #中止任何花費超過指定時間的陳述式。 如果 log_min_error_statement
設定為 ERROR
或更低,則超時的陳述式也會被記錄。 如果此值在沒有單位的情況下指定,則以毫秒為單位。 值為零(預設值)會停用逾時。
逾時是從指令到達伺服器的時間到伺服器完成指令的時間來測量的。 如果單一簡式查詢訊息中出現多個 SQL 陳述式,則逾時會分別套用至每個陳述式。 (13 之前的 PostgreSQL 版本通常將逾時視為套用至整個查詢字串。) 在擴充查詢協定中,逾時會在任何與查詢相關的訊息(Parse、Bind、Execute、Describe)到達時開始執行,並在完成 Execute 或 Sync 訊息時取消。
不建議在 postgresql.conf
中設定 statement_timeout
,因為它會影響所有會話。
transaction_timeout
(integer
) #終止在交易中花費超過指定時間的任何會話。 此限制同時適用於明確的交易(以 BEGIN
開始)和對應於單一陳述式的隱式啟動的交易。 如果此值在沒有單位的情況下指定,則以毫秒為單位。 值為零(預設值)會停用逾時。
如果 transaction_timeout
短於或等於 idle_in_transaction_session_timeout
或 statement_timeout
,則會忽略較長的逾時。
不建議在 postgresql.conf
中設定 transaction_timeout
,因為它會影響所有會話。
預備交易不受此逾時限制。
lock_timeout
(integer
) #中止任何在嘗試取得表格、索引、列或其他資料庫物件的鎖定時等待超過指定時間的陳述式。 時間限制會分別套用至每個鎖定取得嘗試。 此限制同時適用於明確的鎖定請求(例如沒有 NOWAIT
的 LOCK TABLE
或 SELECT FOR UPDATE
)和隱式取得的鎖定。 如果此值在沒有單位的情況下指定,則以毫秒為單位。 值為零(預設值)會停用逾時。
與 statement_timeout
不同,此逾時只能在等待鎖定時發生。 請注意,如果 statement_timeout
非零,則將 lock_timeout
設定為相同或更大的值是沒有意義的,因為陳述式逾時始終會先觸發。 如果 log_min_error_statement
設定為 ERROR
或更低,則超時的陳述式將被記錄。
不建議在 postgresql.conf
中設定 lock_timeout
,因為它會影響所有會話。
idle_in_transaction_session_timeout
(integer
) #終止在開啟的交易中閒置(即,等待用戶端查詢)超過指定時間的任何會話。 如果此值在沒有單位的情況下指定,則以毫秒為單位。 值為零(預設值)會停用逾時。
這個選項可用於確保閒置連線不會長時間持有鎖定。即使沒有持有重要的鎖定,一個開啟的交易仍會阻止清理器(vacuuming)清除最近已死掉的元組(tuples),而這些元組可能僅對該交易可見;因此,長時間保持閒置可能會導致資料表膨脹。詳情請參閱第 24.1 節。
idle_session_timeout
(integer
) #終止任何已閒置(即等待用戶端查詢),但不在開啟交易中的連線,且閒置時間超過指定的時間量。如果此值未指定單位,則視為毫秒。值為零(預設值)表示停用逾時。
與開啟交易的情況不同,沒有交易的閒置連線不會對伺服器造成太大的成本,因此啟用此逾時的必要性不如 idle_in_transaction_session_timeout
。
請謹慎對待透過連線池軟體或其他中介軟體建立的連線強制執行此逾時,因為此類層可能無法對意外的連線關閉做出良好反應。僅對互動式連線啟用此逾時可能會有幫助,例如僅將其應用於特定使用者。
vacuum_freeze_table_age
(integer
) #如果資料表的 pg_class
.relfrozenxid
欄位已達到此設定指定的 age,VACUUM
會執行積極掃描。積極掃描與常規 VACUUM
的不同之處在於,它會訪問每個可能包含未凍結 XID 或 MXID 的頁面,而不僅僅是可能包含已死元組的頁面。預設值為 1.5 億個交易。雖然使用者可以將此值設定為零到 20 億之間的任何值,但 VACUUM
會靜默地將有效值限制為 autovacuum_freeze_max_age 的 95%,以便定期手動 VACUUM
能夠在啟動用於資料表的防止迴繞自動清理器之前有機會運行。有關更多資訊,請參閱第 24.1.5 節。
vacuum_freeze_min_age
(integer
) #指定 VACUUM
應用於決定是否觸發凍結具有較舊 XID 的頁面的截止 age(以交易數為單位)。預設值為 5 千萬個交易。雖然使用者可以將此值設定為零到 10 億之間的任何值,但 VACUUM
會靜默地將有效值限制為 autovacuum_freeze_max_age 值的一半,以避免強制自動清理器之間的時間間隔過短。有關更多資訊,請參閱第 24.1.5 節。
vacuum_failsafe_age
(integer
) #指定資料表的 pg_class
.relfrozenxid
欄位可以達到的最大 age(以交易數為單位),在此之前,VACUUM
會採取非常措施來避免系統範圍內的交易 ID 迴繞失敗。這是 VACUUM
的最後手段。當防止交易 ID 迴繞的自動清理器已經運行了一段時間時,通常會觸發 failsafe,儘管 failsafe 可能在任何 VACUUM
期間觸發。
當觸發 failsafe 時,任何生效的基於成本的延遲將不再應用,進一步的非必要維護任務(例如索引清理)將被繞過,並且任何正在使用的緩衝區存取策略將被停用,導致 VACUUM
可以自由使用所有共享緩衝區。
預設值為 16 億個交易。雖然使用者可以將此值設定為零到 21 億之間的任何值,但 VACUUM
會靜默地將有效值調整為不低於 autovacuum_freeze_max_age 的 105%。
vacuum_multixact_freeze_table_age
(integer
) #如果資料表的 pg_class
.relminmxid
欄位已達到此設定指定的 age,VACUUM
會執行積極掃描。積極掃描與常規 VACUUM
的不同之處在於,它會訪問每個可能包含未凍結 XID 或 MXID 的頁面,而不僅僅是可能包含已死元組的頁面。預設值為 1.5 億個 multixacts。雖然使用者可以將此值設定為零到 20 億之間的任何值,但 VACUUM
會靜默地將有效值限制為 autovacuum_multixact_freeze_max_age 的 95%,以便定期手動 VACUUM
能夠在啟動用於資料表的防止迴繞自動清理器之前有機會運行。有關更多資訊,請參閱第 24.1.5.1 節。
vacuum_multixact_freeze_min_age
(integer
) #指定 VACUUM
應用於決定是否觸發凍結具有較舊 multixact ID 的頁面的截止 age(以 multixacts 數為單位)。預設值為 5 百萬個 multixacts。雖然使用者可以將此值設定為零到 10 億之間的任何值,但 VACUUM
會靜默地將有效值限制為 autovacuum_multixact_freeze_max_age 值的一半,以避免強制自動清理器之間的時間間隔過短。有關更多資訊,請參閱第 24.1.5.1 節。
vacuum_multixact_failsafe_age
(integer
) #指定資料表的 pg_class
.relminmxid
欄位可以達到的最大 age(以 multixacts 數為單位),在此之前,VACUUM
會採取非常措施來避免系統範圍內的 multixact ID 迴繞失敗。這是 VACUUM
的最後手段。當防止交易 ID 迴繞的自動清理器已經運行了一段時間時,通常會觸發 failsafe,儘管 failsafe 可能在任何 VACUUM
期間觸發。
當觸發故障安全機制時,任何有效的基於成本的延遲將不再適用,並且會略過進一步的非必要維護任務(例如索引清理)。
預設值為 16 億個多重交易 ID。 雖然使用者可以將此值設定為零到 21 億之間的任何值,但 VACUUM
會靜默地將有效值調整為不低於 autovacuum_multixact_freeze_max_age 的 105%。
bytea_output
(enum
) #設定 bytea
類型值的輸出格式。有效值為 hex
(預設值)和 escape
(傳統的 PostgreSQL 格式)。有關更多資訊,請參閱第 8.4 節。bytea
類型始終接受輸入的兩種格式,無論此設定為何。
xmlbinary
(enum
) #設定二進位值在 XML 中編碼的方式。 例如,當 bytea
值通過函數 xmlelement
或 xmlforest
轉換為 XML 時,這會生效。 可能的值為 base64
和 hex
,它們都在 XML Schema 標準中定義。 預設值為 base64
。 有關 XML 相關函數的更多資訊,請參閱第 9.15 節。
此處的實際選擇主要是一個品味問題,僅受客戶端應用程式中可能存在的限制的約束。 兩種方法都支援所有可能的值,儘管十六進位編碼將比 base64 編碼稍大。
xmloption
(enum
) #設定在 XML 和字元串值之間轉換時,隱含使用 DOCUMENT
還是 CONTENT
。有關此的說明,請參閱第 8.13 節。有效值為 DOCUMENT
和 CONTENT
。預設值為 CONTENT
。
根據 SQL 標準,設定此選項的命令是
SET XML OPTION { DOCUMENT | CONTENT };
此語法也適用於 PostgreSQL。
gin_pending_list_limit
(integer
) #設定 GIN 索引的待處理清單的最大大小,該清單在啟用 fastupdate
時使用。 如果清單的大小超過此最大大小,則通過將其中的項目批量移動到索引的主 GIN 資料結構中來清理它。 如果指定此值時沒有單位,則將其視為千位元組。 預設值為 4 MB(4MB
)。 可以通過更改索引儲存參數來覆寫單個 GIN 索引的此設定。 有關更多資訊,請參閱第 64.4.4.1 節和第 64.4.5 節。
createrole_self_grant
(string
) #如果具有 CREATEROLE
但沒有 SUPERUSER
的使用者建立角色,並且如果此設定設定為非空值,則新建立的角色將授予建立使用者,並具有指定的選項。 該值必須為 set
、inherit
或以逗號分隔的這些選項的清單。 預設值為空字串,這會禁用該功能。
此選項的目的是允許不是超級使用者的 CREATEROLE
使用者自動繼承或自動獲得 SET ROLE
到任何已建立使用者的能力。 由於 CREATEROLE
使用者始終隱式授予已建立角色的 ADMIN OPTION
,因此該使用者始終可以執行 GRANT
語句,該語句可以達到與此設定相同的效果。 但是,如果授予自動發生,則出於可用性原因可能會很方便。 超級使用者會自動繼承每個角色的權限,並且始終可以 SET ROLE
到任何角色,並且可以使用此設定為他們建立的使用者的 CREATEROLE
使用者產生類似的行為。
event_triggers
(boolean
) #允許臨時禁用事件觸發器的執行,以便排除故障並修復有故障的事件觸發器。 將其設定為 false
將禁用所有事件觸發器。 將值設定為 true
允許觸發所有事件觸發器,這是預設值。 只有超級使用者和具有適當 SET
權限的使用者才能更改此設定。
restrict_nonsystem_relation_kind
(string
) #設定禁止存取非系統關係的關係種類。 該值採用以逗號分隔的關係種類清單的形式。 目前,支援的關係種類為 view
和 foreign-table
。
DateStyle
(string
) #設定日期和時間值的顯示格式,以及用於解釋不明確的日期輸入值的規則。 由於歷史原因,此變數包含兩個獨立的元件:輸出格式規範(ISO
、Postgres
、SQL
或 German
)和年/月/日排序的輸入/輸出規範(DMY
、MDY
或 YMD
)。 這些可以單獨或一起設定。 關鍵字 Euro
和 European
是 DMY
的同義字; 關鍵字 US
、NonEuro
和 NonEuropean
是 MDY
的同義字。 有關更多資訊,請參閱第 8.5 節。 內建預設值為 ISO, MDY
,但 initdb 將使用與所選 lc_time
地區設定的行為相對應的設定初始化設定檔。
IntervalStyle
(enum
) #設定間隔值的顯示格式。 值 sql_standard
將產生符合SQL標準區間字面值。值 postgres
(預設值) 會產生符合 8.4 之前的 PostgreSQL 版本的輸出,當時 DateStyle 參數設定為 ISO
。值 postgres_verbose
會產生符合 8.4 之前的 PostgreSQL 版本的輸出,當時 DateStyle
參數設定為非 ISO
輸出。值 iso_8601
將產生符合 ISO 8601 的 4.4.3.2 節中定義的 “帶標識符的格式” 時間間隔。
IntervalStyle
參數也會影響不明確區間輸入的解讀。有關更多資訊,請參閱 第 8.5.4 節。
TimeZone
(string
) #設定顯示和解讀時間戳記的時區。內建預設值為 GMT
,但通常會在 postgresql.conf
中覆寫;initdb 將在那裡安裝一個對應於其系統環境的設定。有關更多資訊,請參閱 第 8.5.3 節。
timezone_abbreviations
(string
) #設定伺服器將接受用於日期時間輸入的時區縮寫集合。預設值為 'Default'
,這是在世界大部分地區使用的集合;還有 'Australia'
和 'India'
,並且可以為特定安裝定義其他集合。有關更多資訊,請參閱 第 B.4 節。
extra_float_digits
(integer
) #此參數調整用於浮點數值(包括 float4
、float8
和幾何資料類型)文字輸出的位數。
如果值為 1(預設值)或更高,則浮點數值以最短精確格式輸出;請參閱 第 8.1.3 節。產生的實際位數僅取決於要輸出的值,而不取決於此參數的值。對於 float8
值,最多需要 17 位數,對於 float4
值,最多需要 9 位數。此格式既快速又精確,可以在正確讀取時精確保留原始二進制浮點數值。為了保持歷史相容性,允許使用高達 3 的值。
如果值為零或負數,則輸出將捨入到給定的十進制精度。使用的精度是該類型的標準位數(適當地為 FLT_DIG
或 DBL_DIG
),根據此參數的值減少。(例如,指定 -1 將導致 float4
值輸出捨入到 5 個有效位數,而 float8
值捨入到 14 位數。)此格式較慢,並且不保留二進制浮點數值的所有位元,但可能更易於人閱讀。
此參數的含義及其預設值在 PostgreSQL 12 中已更改;有關更多討論,請參閱 第 8.1.3 節。
client_encoding
(string
) #設定客戶端編碼(字元集)。預設值是使用資料庫編碼。PostgreSQL 伺服器支援的字元集在 第 23.3.1 節中描述。
lc_messages
(string
) #設定顯示訊息的語言。可接受的值與系統相關;有關更多資訊,請參閱 第 23.1 節。如果此變數設定為空字串(預設值),則該值以與系統相關的方式從伺服器的執行環境繼承。
在某些系統上,此地區設定類別不存在。設定此變數仍然有效,但不會有任何效果。此外,存在所需語言沒有翻譯訊息的可能性。在這種情況下,您將繼續看到英文訊息。
只有超級使用者和具有適當 SET
權限的使用者才能更改此設定。
lc_monetary
(string
) #設定用於格式化貨幣金額的地區設定,例如使用 to_char
函數系列。可接受的值與系統相關;有關更多資訊,請參閱 第 23.1 節。如果此變數設定為空字串(預設值),則該值以與系統相關的方式從伺服器的執行環境繼承。
lc_numeric
(string
) #設定用於格式化數字的地區設定,例如使用 to_char
函數系列。可接受的值與系統相關;有關更多資訊,請參閱 第 23.1 節。如果此變數設定為空字串(預設值),則該值以與系統相關的方式從伺服器的執行環境繼承。
lc_time
(string
) #設定用於格式化日期和時間的 locale,例如用於 to_char
系列函數。可接受的值取決於系統;詳情請參閱第 23.1 節。如果此變數設定為空字串(預設值),則該值會以取決於系統的方式從伺服器的執行環境繼承。
icu_validation_level
(enum
) #當遇到 ICU locale 驗證問題時,控制使用哪個訊息層級來報告問題。有效值為 DISABLED
、DEBUG5
、DEBUG4
、DEBUG3
、DEBUG2
、DEBUG1
、INFO
、NOTICE
、WARNING
、ERROR
和 LOG
。
如果設定為 DISABLED
,則完全不報告驗證問題。否則,以給定的訊息層級報告問題。預設值為 WARNING
。
default_text_search_config
(string
) #選擇那些沒有明確指定設定的引數的文字搜尋函數變體所使用的文字搜尋設定。請參閱第 12 章以獲取更多資訊。內建的預設值是 pg_catalog.simple
,但是如果可以識別與所選的 lc_ctype
locale 相符的設定,則 initdb 會使用與該 locale 對應的設定來初始化設定檔。
有多個設定可用於將共用函式庫預先載入到伺服器中,以便載入額外的功能或實現效能優勢。例如,設定為 '$libdir/mylib'
會導致從安裝的標準函式庫目錄中預先載入 mylib.so
(或在某些平台上為 mylib.sl
)。這些設定之間的差異在於它們何時生效以及變更它們需要哪些權限。
PostgreSQL 程序語言函式庫可以透過這種方式預先載入,通常使用語法 '$libdir/plXXX'
,其中 XXX
是 pgsql
、perl
、tcl
或 python
。
只有專門設計用於 PostgreSQL 的共用函式庫才能以這種方式載入。每個 PostgreSQL 支援的函式庫都有一個「magic block」,用於檢查以保證相容性。因此,非 PostgreSQL 函式庫不能以這種方式載入。您可以使用作業系統工具,例如 LD_PRELOAD
來完成此操作。
通常,請參閱特定模組的文件,以獲取載入該模組的建議方法。
local_preload_libraries
(string
) #此變數指定在連線開始時要預先載入的一個或多個共用函式庫。它包含以逗號分隔的函式庫名稱清單,其中每個名稱都按照 LOAD
命令進行解譯。條目之間的空白會被忽略;如果需要在名稱中包含空白或逗號,請用雙引號將函式庫名稱括起來。參數值僅在連線開始時生效。後續的變更無效。如果找不到指定的函式庫,連線嘗試將失敗。
任何使用者都可以設定此選項。因此,可以載入的函式庫僅限於出現在安裝的標準函式庫目錄的 plugins
子目錄中的函式庫。(資料庫管理員有責任確保僅在此處安裝「安全」的函式庫。)local_preload_libraries
中的條目可以明確指定此目錄,例如 $libdir/plugins/mylib
,或者僅指定函式庫名稱 — mylib
將具有與 $libdir/plugins/mylib
相同的效果。
此功能的目的是允許非特權使用者將偵錯或效能測量函式庫載入到特定工作階段中,而無需明確的 LOAD
命令。為此,通常會使用客戶端的 PGOPTIONS
環境變數或使用 ALTER ROLE SET
來設定此參數。
但是,除非模組專門設計為供非超級使用者以這種方式使用,否則通常不應該使用此設定。請改為查看 session_preload_libraries。
session_preload_libraries
(string
) #此變數指定在連線開始時要預先載入的一個或多個共用函式庫。它包含以逗號分隔的函式庫名稱清單,其中每個名稱都按照 LOAD
命令進行解譯。條目之間的空白會被忽略;如果需要在名稱中包含空白或逗號,請用雙引號將函式庫名稱括起來。參數值僅在連線開始時生效。後續的變更無效。如果找不到指定的函式庫,連線嘗試將失敗。只有超級使用者和具有適當 SET
權限的使用者才能變更此設定。
此功能的目的是允許將偵錯或效能測量函式庫載入到特定工作階段中,而無需給出明確的 LOAD
命令。例如,可以透過使用 ALTER ROLE SET
設定此參數,為給定使用者名稱下的所有工作階段啟用 auto_explain。此外,可以在不重新啟動伺服器的情況下變更此參數(但是變更僅在啟動新工作階段時生效),因此即使它們應適用於所有工作階段,也更容易以這種方式新增新的模組。
與 shared_preload_libraries 不同,在會話開始時載入函式庫並不會比第一次使用時載入帶來顯著的效能優勢。 然而,當使用連線池時,會有一定的優勢。
shared_preload_libraries
(string
) #此變數指定一個或多個在伺服器啟動時預先載入的共享函式庫。 它包含一個以逗號分隔的函式庫名稱列表,其中每個名稱的解釋方式與 LOAD
指令相同。 條目之間的空白會被忽略; 如果您需要在名稱中包含空白或逗號,請用雙引號將函式庫名稱括起來。 此參數只能在伺服器啟動時設定。 如果找不到指定的函式庫,伺服器將無法啟動。
某些函式庫需要執行某些只能在 postmaster 啟動時執行的操作,例如配置共享記憶體、保留輕量級鎖定或啟動背景工作程序。 這些函式庫必須透過此參數在伺服器啟動時載入。 有關詳細訊息,請參閱每個函式庫的文件。
也可以預先載入其他函式庫。 透過預先載入共享函式庫,可以避免在第一次使用該函式庫時的函式庫啟動時間。 但是,即使該程序從未使用該函式庫,啟動每個新伺服器程序的時間也可能會略有增加。 因此,建議僅針對大多數會話中使用的函式庫使用此參數。 此外,變更此參數需要重新啟動伺服器,因此這不適合用於短期偵錯任務。 請改用 session_preload_libraries。
在 Windows 主機上,在伺服器啟動時預先載入函式庫不會減少啟動每個新伺服器程序所需的時間; 每個伺服器程序都會重新載入所有預先載入的函式庫。 但是,對於需要在 postmaster 啟動時執行操作的函式庫,shared_preload_libraries
在 Windows 主機上仍然很有用。
jit_provider
(string
) #此變數是要使用的 JIT 提供者函式庫的名稱(請參閱 第 30.4.2 節)。 預設值為 llvmjit
。 此參數只能在伺服器啟動時設定。
如果設定為不存在的函式庫,JIT將不可用,但不會引發任何錯誤。 這允許將 JIT 支援與主 PostgreSQL 套件分開安裝。
dynamic_library_path
(string
) #如果需要開啟一個動態可載入的模組,並且在 CREATE FUNCTION
或 LOAD
指令中指定的文件名沒有目錄元件(即,名稱不包含斜線),則系統將在此路徑中搜尋所需的文件。
dynamic_library_path
的值必須是以冒號(或 Windows 上的分號)分隔的絕對目錄路徑列表。 如果列表元素以特殊字串 $libdir
開頭,則編譯到 PostgreSQL 套件函式庫目錄中的目錄將被替換為 $libdir
; 這就是標準 PostgreSQL 發行版提供的模組的安裝位置。 (使用 pg_config --pkglibdir
找出此目錄的名稱。)例如
dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir'
或者,在 Windows 環境中
dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
此參數的預設值為 '$libdir'
。 如果該值設定為空字串,則自動路徑搜尋將關閉。
超級使用者和具有適當 SET
權限的使用者可以在執行時變更此參數,但以這種方式完成的設定只會持續到客戶端連線結束,因此這種方法應保留用於開發目的。 建議在 postgresql.conf
設定檔中設定此參數。
gin_fuzzy_search_limit
(integer
) #GIN 索引掃描傳回的集合大小的軟上限。 有關更多訊息,請參閱 第 64.4.5 節。
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。