全部產品
Search
文件中心

PolarDB:pg_settings

更新時間:Jul 06, 2024

pg_settings視圖提供了對伺服器上運行時參數的訪問。

簡介

pg_settings本質上是SHOWSET命令的可替換介面。它還提供了SHOW不能提供的關於每一個參數的一些資訊,例如,最大值和最小值。

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

參數的最小允許值(對非數字值為空白)。

max_val

text

參數的最大允許值(對非數字值為空白)。

enumvals

text[]

一個枚舉參數的允許值(對非數字值為空白)。

boot_val

text

如果參數沒有進行其他設定,此列為在伺服器啟動時設定的參數值。

reset_val

text

在當前會話中,RESET將會設定的參數值。

sourcefile

text

當前值被設定的設定檔(空值表示從非設定檔的其他來源設定,不是超級使用者也不是pg_read_all_settings成員的使用者檢查時也為空白值),在設定檔中使用include指令時有用。

sourceline

int4

當前值被設定的設定檔中的行號(空值表示從非設定檔的其他來源設定,不是超級使用者也不是pg_read_all_settings成員的使用者檢查時也為空白值)。

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中進行而無需重啟伺服器。也可以在串連請求包(例如,通過libpq的PGOPTIONS環境變數)中為一個特定的會話設定它們,但是只有在串連使用者是超級使用者時才能操作。如果在會話啟動後這些設定就不會改變。如果在postgresql.conf改變了它們, 向postmaster發送一個SIGHUP訊號讓postmaster重新讀取postgresql.conf。新的值將只會影響後續啟動的會話。

  • backend:對於這些設定的修改可以在postgresql.conf中完成並且不需要重啟伺服器。它們也可以在一個串連請求包(例如,通過libpq的PGOPTIONS環境變數)中為一個特定會話設定 ,任何使用者都可以為這個會話做這種修改。然而,這些設定在會話啟動後不會發生變化。如果在postgresql.conf中修改它們,可以向postmaster發送一個SIGHUP訊號讓它重讀postgresql.conf。新值只會影響後續啟動的會話。

  • superuser:這些設定可以從postgresql.conf設定,或者在會話中用SET命令設定。僅當沒有通過SET設定會話本地值時,postgresql.conf中的改變才會影響現有的會話。

  • user:這些設定可以從postgresql.conf設定,或者在會話中用SET命令設定。任何使用者都被允許修改它們的會話本地值。僅當沒有通過SET設定會話本地值時,postgresql.conf中的改變才會影響現有的會話。

說明

pg_settings視圖不能被插入或者從中刪除,但是可以被更新。在pg_settings的一行上的一個UPDATE等價於在該參數上執行一個SET命令。修改將只會影響當前會話使用的值。如果一個UPDATE在一個後來中斷的事務中被發出,UPDATE命令的效果也會隨著事務的復原而消失。一旦所在的事務被提交,效果將一直保持到會話結束,除非有其他UPDATESET重新修改它。