支援的版本: 目前版本 (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 / 8.0 / 7.4

52.24. pg_settings #

視窗 pg_settings 提供對伺服器執行時參數的存取。它本質上是 SHOWSET 命令的替代介面。它還提供對每個參數的一些事實的存取,這些事實無法直接從 SHOW 取得,例如最小值和最大值。

表 52.24. pg_settings 欄位

欄位類型

描述

name text

執行時組態參數名稱

setting text

參數的目前值

unit text

參數的隱含單位

category text

參數的邏輯群組

short_desc text

參數的簡要描述

extra_desc text

參數的額外、更詳細的描述

context text

設定參數值所需的內容(請參閱下文)

vartype text

參數類型 (boolenumintegerrealstring)

source text

目前參數值的來源

min_val text

參數允許的最小值(非數值的值為 null)

max_val text

參數允許的最大值(非數值的值為 null)

enumvals text[]

枚舉參數的允許值(非枚舉的值為 null)

boot_val text

如果未以其他方式設定參數,則伺服器啟動時假設的參數值

reset_val text

RESET 會將參數重設為目前工作階段中的值

sourcefile text

目前值在其中設定的組態檔(從組態檔以外的來源設定的值為 null,或者當由既非超級使用者且沒有 pg_read_all_settings 權限的使用者檢查時為 null);在使用組態檔中的 include 指示詞時很有用

sourceline int4

設定目前值的組態檔中的行號(從組態檔以外的來源設定的值為 null,或者當由既非超級使用者且沒有 pg_read_all_settings 權限的使用者檢查時為 null)。

pending_restart bool

如果該值已在組態檔中變更但需要重新啟動,則為 true;否則為 false


context 有幾個可能的值。依照變更設定的難度遞減的順序,它們是

internal

這些設定無法直接變更;它們反映內部確定的值。可以透過使用不同的組態選項重建伺服器,或者透過變更提供給 initdb 的選項來調整其中一些設定。

postmaster

這些設定只能在伺服器啟動時套用,因此任何變更都需要重新啟動伺服器。這些設定的值通常儲存在 postgresql.conf 檔案中,或者在啟動伺服器時在命令列上傳遞。當然,任何較低 context 類型的設定也可以在伺服器啟動時設定。

sighup

可以在 postgresql.conf 中變更這些設定,而無需重新啟動伺服器。將 SIGHUP 訊號傳送到 postmaster,使其重新讀取 postgresql.conf 並套用變更。postmaster 也會將 SIGHUP 訊號轉發到其子進程,以便它們都取得新值。

superuser-backend

可以在 postgresql.conf 中變更這些設定,而無需重新啟動伺服器。也可以在連線請求封包中針對特定工作階段設定它們(例如,透過 libpqPGOPTIONS 環境變數),但前提是連線的使用者是超級使用者或已被授予適當的 SET 權限。但是,這些設定在工作階段啟動後永遠不會變更。如果您在 postgresql.conf 中變更它們,請將 SIGHUP 訊號傳送到 postmaster,使其重新讀取 postgresql.conf。新值只會影響後續啟動的工作階段。

backend

這些設定的變更可以在 postgresql.conf 檔案中進行,而無需重新啟動伺服器。它們也可以在連線請求封包中針對特定會話進行設定(例如,透過 libpqPGOPTIONS 環境變數);任何使用者都可以為其會話進行此類變更。但是,這些設定在會話啟動後永遠不會改變。如果您在 postgresql.conf 中變更它們,請傳送 SIGHUP 訊號給 postmaster,以使其重新讀取 postgresql.conf。新的值只會影響後續啟動的會話。

超級使用者

這些設定可以從 postgresql.conf 檔案設定,或透過 SET 指令在會話中設定;但只有超級使用者和具有適當 SET 權限的使用者才能透過 SET 指令變更它們。只有在沒有使用 SET 建立會話本地值的情況下,postgresql.conf 中的變更才會影響現有的會話。

使用者

這些設定可以從 postgresql.conf 檔案設定,或透過 SET 指令在會話中設定。任何使用者都可以變更其會話本地值。只有在沒有使用 SET 建立會話本地值的情況下,postgresql.conf 中的變更才會影響現有的會話。

有關變更這些參數的各種方法的更多資訊,請參閱 第 19.1 節

這個視窗無法插入或刪除,但可以更新。對 pg_settings 的一列套用 UPDATE,相當於對該命名參數執行 SET 指令。該變更僅影響目前會話使用的值。如果在稍後中止的交易中發出 UPDATE,則 UPDATE 指令的效果會在交易回滾時消失。一旦周圍的交易被提交,該效果將持續到會話結束,除非被另一個 UPDATESET 覆蓋。

此視窗不顯示自定義選項,除非定義它們的擴充模組已由執行查詢的後端程序載入(例如,透過在shared_preload_libraries中的提及、呼叫擴充中的C函數,或LOAD 指令)。 例如,由於封存模組通常僅由封存程序而非常規會話載入,因此除非採取特殊措施將它們載入到執行查詢的後端程序中,否則此視窗將不會顯示此類模組定義的任何自定義選項。

提交更正

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