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 / 8.0 / 7.4

53.25. pg_settings #

檢視pg_settings提供了對伺服器執行時引數的訪問。它本質上是SHOWSET命令的替代介面。它還提供了對每個引數的一些直接從SHOW無法獲得的屬性的訪問,例如最小值和最大值。

表 53.25. 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


There are several possible values of context. In order of decreasing difficulty of changing the setting, they are

internal

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

postmaster

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

sighup

這些設定可以在postgresql.conf中更改,而無需重啟伺服器。向postmaster傳送SIGHUP訊號,使其重新讀取postgresql.conf並應用更改。postmaster還會將SIGHUP訊號轉發給其子程序,以便它們都能獲取新值。

superuser-backend

這些設定可以在postgresql.conf中更改,而無需重啟伺服器。它們也可以在連線請求包中為特定會話設定(例如,透過libpqPGOPTIONS環境變數),但前提是連線使用者是超級使用者或已被授予適當的SET許可權。但是,這些設定在會話啟動後永不更改。如果在postgresql.conf中更改它們,請向postmaster傳送SIGHUP訊號,使其重新讀取postgresql.conf。新值僅影響隨後啟動的會話。

backend

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

superuser

這些設定可以從postgresql.conf設定,或在會話中透過SET命令設定;但只有超級使用者和具有適當SET許可權的使用者可以透過SET更改它們。對postgresql.conf的更改將僅影響現有會話,前提是沒有透過SET建立會話本地值。

user

These settings can be set from postgresql.conf, or within a session via the SET command. Any user is allowed to change their session-local value. Changes in postgresql.conf will affect existing sessions only if no session-local value has been established with SET.

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

此檢視無法插入或刪除,但可以更新。應用於pg_settings行的UPDATE等同於對該命名引數執行SET命令。更改僅影響當前會話使用的值。如果在稍後被中止的事務內發出UPDATE,則當事務回滾時,UPDATE命令的效果將消失。一旦周圍事務提交,效果將持續到會話結束,除非被另一個UPDATESET覆蓋。

此檢視不顯示自定義選項,除非定義它們的擴充套件模組已由執行查詢的後端程序載入(例如,透過shared_preload_libraries中的提及,對擴充套件中的C函式呼叫,或LOAD命令)。例如,由於歸檔模組通常僅由歸檔程序而不是常規會話載入,因此此檢視不會顯示這些模組定義的任何自定義選項,除非採取特殊措施將其載入到執行查詢的後端程序中。

提交更正

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