2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

19.11. 客戶端連線預設值 #

19.11.1. 語句行為 #

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 TABLEALTER 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 FUNCTIONCREATE PROCEDURE 過程中對例程體字串的驗證。停用驗證可以避免驗證過程的副作用,特別是防止因前向引用等問題而導致的誤報。pg_dump 會自動進行此設定,以便在代表其他使用者載入函式之前將此引數設定為 off

default_transaction_isolation (enum) #

每個 SQL 事務都有一個隔離級別,可以是“未提交讀”(read uncommitted)、“已提交讀”(read committed)、“可重複讀”(repeatable read)或“序列化”(serializable)。此引數控制每個新事務的預設隔離級別。預設值為“已提交讀”。

有關更多資訊,請參閱 第 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(預設值)、replicalocal。設定此引數將導致丟棄任何先前快取的查詢計劃。只有超級使用者和具有相應 SET 許可權的使用者才能更改此設定。

此設定的預期用途是邏輯複製系統在應用複製的更改時將其設定為 replica。這將導致觸發器和規則(未被更改其預設配置)在副本上不觸發。有關更多資訊,請參閱 ALTER TABLE 子句 ENABLE TRIGGERENABLE RULE

PostgreSQL 在內部處理 originlocal 設定。第三方複製系統可能會將這兩個值用於其內部目的,例如使用 local 來表示不應複製其更改的會話。

由於外部索引鍵是透過觸發器實現的,將此引數設定為 replica 也會停用所有外部索引鍵檢查,如果使用不當,可能會導致資料處於不一致狀態。

statement_timeout (integer) #

中止任何執行時間超過指定時間的語句。如果 log_min_error_statement 設定為 ERROR 或更低,則已超時的語句也會被記錄。如果指定此值而不帶單位,則將其視為毫秒。值為零(預設值)將停用超時。

超時是從命令到達伺服器到伺服器完成的時間來衡量的。如果一個簡單的查詢訊息中包含多個 SQL 語句,則超時會分別應用於每個語句。(PostgreSQL 13 之前的版本通常將超時視為應用於整個查詢字串。)在擴充套件查詢協議中,超時從任何與查詢相關的訊息(Parse、Bind、Execute、Describe)到達時開始執行,並在 Execute 或 Sync 訊息完成時取消。

不建議在 postgresql.conf 中設定 statement_timeout,因為它會影響所有會話。

transaction_timeout (integer) #

終止任何在一個事務中執行時間超過指定時間的會話。此限制既適用於顯式事務(以 BEGIN 開始),也適用於與單個語句對應的隱式開始的事務。如果指定此值而不帶單位,則將其視為毫秒。值為零(預設值)將停用超時。

如果 transaction_timeout 短於或等於 idle_in_transaction_session_timeoutstatement_timeout,則較長的超時將被忽略。

不建議在 postgresql.conf 中設定 transaction_timeout,因為它會影響所有會話。

注意

預備事務不受此超時的影響。

lock_timeout (integer) #

中止任何在嘗試獲取表、索引、行或其他資料庫物件的鎖時等待時間超過指定時間的語句。時間限制分別應用於每次鎖獲取嘗試。該限制既適用於顯式鎖定請求(例如 LOCK TABLE 或不帶 NOWAITSELECT FOR UPDATE),也適用於隱式獲取的鎖。如果指定此值而不帶單位,則將其視為毫秒。值為零(預設值)將停用超時。

statement_timeout 不同,此超時只能在等待鎖時發生。請注意,如果 statement_timeout 非零,則將 lock_timeout 設定為相同或更大的值是毫無意義的,因為語句超時總是會先觸發。如果 log_min_error_statement 設定為 ERROR 或更低,則已超時的語句將被記錄。

不建議在 postgresql.conf 中設定 lock_timeout,因為它會影響所有會話。

idle_in_transaction_session_timeout (integer) #

終止任何在開放事務內空閒(即等待客戶端查詢)超過指定時間的會話。如果指定此值而不帶單位,則將其視為毫秒。值為零(預設值)將停用超時。

此選項可用於確保空閒會話不會長時間持有鎖。即使沒有持有重要的鎖,開放的事務也會阻止 vacuum 清理最近的、僅對此事務可見的死元組;因此,長時間空閒可能會導致表膨脹。有關更多詳細資訊,請參閱 第 24.1 節

idle_session_timeout (integer) #

終止任何空閒(即等待客戶端查詢),但未處於開放事務狀態的會話,如果空閒時間超過指定時間。如果指定此值而不帶單位,則將其視為毫秒。值為零(預設值)將停用超時。

與開放事務的情況不同,沒有事務的空閒會話不會給伺服器帶來巨大的成本,因此比 idle_in_transaction_session_timeout 更需要啟用此超時。

請注意,在透過連線池軟體或其他中介軟體進行的連線上強制執行此超時可能會產生負面影響,因為此類層可能無法很好地處理意外的連線關閉。可能有助於僅為互動式會話啟用此超時,也許只將其應用於特定使用者。

bytea_output (enum) #

設定 bytea 型別值的輸出格式。有效值為 hex(預設值)和 escape(傳統的 PostgreSQL 格式)。有關更多資訊,請參閱 第 8.4 節。無論此設定如何,bytea 型別在輸入時始終接受這兩種格式。

xmlbinary (enum) #

設定二進位制值如何在 XML 中編碼。例如,當 bytea 值透過 xmlelementxmlforest 函式轉換為 XML 時,此設定將生效。可能的值是 base64hex,它們都定義在 XML Schema 標準中。預設值為 base64。有關 XML 相關函式的更多資訊,請參閱 第 9.15 節

實際選擇主要取決於個人喜好,僅受客戶端應用程式可能存在的限制。兩種方法都支援所有可能的值,儘管十六進位制編碼比 base64 編碼要大一些。

xmloption (enum) #

設定在 XML 和字串值之間轉換時 DOCUMENTCONTENT 是否是隱式的。有關此內容的描述,請參閱 第 8.13 節。有效值為 DOCUMENTCONTENT。預設值為 CONTENT

根據 SQL 標準,設定此選項的命令是

SET XML OPTION { DOCUMENT | CONTENT };

PostgreSQL 也支援此語法。

gin_pending_list_limit (integer) #

設定 GIN 索引的待處理列表的最大大小,當啟用 fastupdate 時使用。如果列表的大小超過此最大值,它將透過將列表中的條目批次移動到索引的主 GIN 資料結構中來清除。如果指定此值而不帶單位,則視為千位元組。預設值為四兆位元組(4MB)。可以透過更改索引儲存引數來為單個 GIN 索引覆蓋此設定。有關更多資訊,請參閱 第 65.4.4.1 節第 65.4.5 節

createrole_self_grant (string) #

如果一個擁有 CREATEROLE 但不擁有 SUPERUSER 許可權的使用者建立了一個角色,並且此選項設定為非空值,則新建立的角色將以指定的選項授予建立者。該值必須是 setinherit 或它們的逗號分隔列表。預設值是空字串,這會停用該功能。

此選項的目的是允許一個非超級使用者的 CREATEROLE 使用者自動繼承或自動獲得 SET ROLE 到已建立角色的能力。由於 CREATEROLE 使用者始終隱式獲得對其建立角色的 ADMIN OPTION,因此該使用者始終可以執行 GRANT 語句,以達到與此設定相同的效果。但是,出於可用性考慮,如果授予自動發生,可能會很方便。超級使用者會自動繼承每個角色的許可權,並且可以始終 SET ROLE 到任何角色,而此設定可用於為 CREATEROLE 使用者生成類似行為,以建立的使用者。

event_triggers (boolean) #

允許暫時停用事件觸發器的執行,以便對有故障的事件觸發器進行故障排除和修復。透過將其設定為 false 來停用所有事件觸發器。將值設定為 true 允許所有事件觸發器觸發,這是預設值。只有超級使用者和具有相應 SET 許可權的使用者才能更改此設定。

restrict_nonsystem_relation_kind (string) #

設定關係型別,對於這些型別,禁止訪問非系統關係。該值採用關係型別逗號分隔列表的形式。目前,支援的關係型別是 viewforeign-table

19.11.2. 區域設定和格式化 #

DateStyle (string) #

設定日期和時間值的顯示格式,以及解釋模糊日期輸入值的規則。出於歷史原因,此變數包含兩個獨立的部分:輸出格式規範(ISOPostgresSQLGerman)以及年/月/日排序的輸入/輸出規範(DMYMDYYMD)。這些可以單獨或一起設定。EuroEuropean 關鍵字是 DMY 的同義詞;USNonEuroNonEuropean 關鍵字是 MDY 的同義詞。有關更多資訊,請參閱 第 8.5 節。內建預設值為 ISO, MDY,但 initdb 將初始化配置檔案,其設定對應於所選 lc_time 區域設定的行為。

IntervalStyle (enum) #

設定間隔值(interval values)的顯示格式。sql_standard 值將生成符合SQL標準間隔字面量的輸出。 postgres 值(這是預設值)將生成符合 8.4 版之前 PostgreSQL 的輸出,當時 DateStyle 引數設定為 ISOpostgres_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) #

設定伺服器在接受日期時間輸入時可接受的其他時區縮寫集合(除了當前 TimeZone 設定定義的任何縮寫)。預設值為 'Default',這是一個在世界大多數地區有效的集合;還有 'Australia''India',其他集合可以在特定安裝中定義。有關更多資訊,請參閱 第 B.4 節

extra_float_digits (integer) #

此引數調整浮點數值(包括 float4float8 和幾何資料型別)的文字輸出使用的位數。

如果值為 1(預設值)或更高,則浮點值以最短精確格式輸出;請參閱 第 8.1.3 節。生成的位數僅取決於要輸出的值,而不取決於此引數的值。float8 值最多需要 17 位,float4 值需要 9 位。此格式既快速又精確,在正確讀取時可以精確保留原始二進位制浮點值。出於歷史相容性,允許的值高達 3。

如果值為零或負數,則輸出將按指定的十進位制精度進行舍入。使用的精度是該型別的標準位數(FLT_DIGDBL_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) #

設定用於格式化日期和時間的區域設定,例如使用 to_char 系列函式。可接受的值是系統依賴的;有關更多資訊,請參閱 第 23.1 節。如果此變數設定為空字串(預設值),則該值將以系統依賴的方式從伺服器的執行環境中繼承。

icu_validation_level (enum) #

當遇到 ICU 區域設定驗證問題時,控制使用哪個 訊息嚴重級別 來報告該問題。有效值為 DISABLEDDEBUG5DEBUG4DEBUG3DEBUG2DEBUG1INFONOTICEWARNINGERRORLOG

如果設定為 DISABLED,則不報告任何驗證問題。否則,將在給定的訊息級別報告問題。預設值為 WARNING

default_text_search_config (string) #

選擇文字搜尋配置,該配置由那些沒有顯式引數指定配置的文字搜尋函式變體使用。有關進一步資訊,請參閱 第 12 章。內建預設值為 pg_catalog.simple,但 initdb 將初始化配置檔案,其設定對應於所選 lc_ctype 區域設定,如果可以識別匹配該區域設定的配置。

19.11.3. 共享庫預載入 #

有多個設定可用於將共享庫預載入到伺服器中,以載入附加功能或獲得性能優勢。例如,設定為 '$libdir/mylib' 將導致 mylib.so(或在某些平臺上 mylib.sl)從安裝的標準庫目錄載入。設定之間的區別在於它們生效的時間以及更改它們所需的許可權。

PostgreSQL 過程語言庫可以透過這種方式預載入,通常使用語法 '$libdir/plXXX',其中 XXXpgsqlperltclpython

只有專門設計用於與 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 包分開安裝。

19.11.4. 其他預設值 #

dynamic_library_path (string) #

如果需要開啟動態載入的模組,並且在 CREATE FUNCTIONLOAD 命令中指定的파일명不包含目錄部分(即名稱不包含斜槓),則系統將在該路徑中搜索所需的檔案。

dynamic_library_path 的值必須是冒號(或 Windows 上的分號)分隔的絕對目錄路徑列表。如果列表元素以特殊字串 $libdir 開頭,則將 $libdir 替換為編譯的 PostgreSQL 包庫目錄;這是標準 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 配置檔案中。

extension_control_path (string) #

搜尋擴充套件的路徑,特別是擴充套件控制檔案(name.control)。其餘的擴充套件指令碼和輔助控制檔案將從找到主控制檔案的同一目錄載入。有關詳細資訊,請參閱 第 36.17.1 節

extension_control_path 的值必須是冒號(或 Windows 上的分號)分隔的絕對目錄路徑列表。如果列表元素以特殊字串 $system 開頭,則將 $system 替換為編譯的 PostgreSQL 擴充套件目錄;這是標準 PostgreSQL 發行版提供的擴充套件的安裝位置。(使用 pg_config --sharedir 來查詢此目錄的名稱。)例如

extension_control_path = '/usr/local/share/postgresql:/home/my_project/share:$system'

或,在 Windows 環境中

extension_control_path = 'C:\tools\postgresql;H:\my_project\share;$system'

請注意,指定的路徑元素預計有一個子目錄 extension,其中包含 .control.sql 檔案;extension 字尾會自動附加到每個路徑元素。

此引數的預設值為 '$system'。如果將該值設定為空字串,則也假定為預設的 '$system'

如果在配置路徑中的多個目錄中存在同名擴充套件,則僅使用路徑中首先找到的例項。

此引數可以在執行時由超級使用者和具有相應 SET 許可權的使用者更改,但在此處進行的設定僅持續到客戶端連線結束,因此此方法應保留用於開發目的。設定此引數的首選方法是在 postgresql.conf 配置檔案中。

請注意,如果您設定此引數以便能夠從非標準位置載入擴充套件,那麼您很可能還需要設定 dynamic_library_path 到相應的位置,例如,

extension_control_path = '/usr/local/share/postgresql:$system'
dynamic_library_path = '/usr/local/lib/postgresql:$libdir'
gin_fuzzy_search_limit (integer) #

GIN 索引掃描返回的集合大小的軟上限。有關更多資訊,請參閱 第 65.4.5 節

提交更正

如果您在文件中看到任何不正確的內容、與特定功能的實際體驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。