?
本文檔使用
php中文網(wǎng)手冊 發(fā)布
所有參數(shù)名都是大小寫不敏感的。每個參數(shù)都可以接受五種類型之一: 布爾、整數(shù)、浮點數(shù)、字符串,枚舉。布爾值可以是(都是大小寫無關(guān)) on,off,true, false,yes,no, 1,0或這些東西的任意清晰無歧義的前綴。
一些設(shè)置指定內(nèi)存或時間值,其隱含的單位可能是:kB(千字節(jié))、塊(通常是 8KB)、 毫秒、秒、分鐘等等。隱含單位可以通過引用pg_settings.unit. 獲取。為了避免混淆,可以在指定數(shù)值的同時指定單位??捎脙?nèi)存單位: kB(千字節(jié)),MB(兆字節(jié))和 GB(吉字節(jié));可用時間單位:ms(毫秒), s(秒),min(分鐘), h(小時), andd(天)。 內(nèi)存單位中的"千"等于 1024 ,而不是 1000。
以與字符串參數(shù)相同的方式設(shè)置"enum"類型的參數(shù),但被限制到一個有限的一組值。 pg_settings.enumvals中有可用值,枚舉參數(shù)值與大小寫無關(guān)。
設(shè)置這些參數(shù)的一個方法是編輯postgresql.conf文件, 它通常在數(shù)據(jù)目錄里(當數(shù)據(jù)庫集的目錄初始化的時候,一個缺省的拷貝將會被安裝在那)。 比如,下面是一個該文件的例子:
# 這是一個注釋 log_connections = yes log_destination = 'syslog' search_path = '"$user", public' shared_buffers = 128MB
像你看到的那樣,選項是每條一行。選項名和值之間的等號是可選的。 空白和空行被忽略。井號(#)引入注釋。 非簡單標識符或者數(shù)字必須用單引號包圍。如果需要在參數(shù)值里嵌入單引號, 要么寫兩個單引號(推薦方法),要么用反斜扛包圍
除了設(shè)置參數(shù)以外,postgresql.conf文件中還可以使用 include directives在其自身所在位置插入其他文件的內(nèi)容。 包含指令的語法如下:
include 'filename'
如果文件名不是絕對路徑那么將被當作相對于包含指令所屬文件的所在目錄。 包含可以被嵌套。
主服務(wù)器進程每次收到SIGHUP信號(最簡單的發(fā)送方法就是使用 pg_ctl reload)后都會重新讀取這個配置文件。同時主服務(wù)器進程 也將這個信號廣播給所有正在運行的子服務(wù)器進程,這樣現(xiàn)有會話也能得到新值。 另外,你可以只向一個服務(wù)器進程直接發(fā)送信號。有些參數(shù)只能在服務(wù)器啟動的 時候設(shè)置;對這些條目的修改將被忽略,直到下次服務(wù)器重啟。
第二種設(shè)置這些配置參數(shù)的方法是把它們作為命令行參數(shù)傳遞給 postgres,比如:
postgres -c log_connections=yes -c log_destination='syslog'
命令行選項覆蓋postgresql.conf中的選項。 編輯postgresql.conf在運行時改變其數(shù)值, 因此,雖然命令行方法很方便,但會付出靈活性的代價。
有時候,給某一個特定會話一個命令行參數(shù)也是很有用的。可以在客戶端使用 環(huán)境變量PGOPTIONS來實現(xiàn)這個目的(可以用于任何基于 libpq的客戶端應(yīng)用,不光是psql):
env PGOPTIONS='-c geqo=off' psql
請注意,這個變量對那些需要在服務(wù)器啟動后固定的選項或者必須在 postgresql.conf里聲明的選項是無效的。
并且,我們可以給一個用戶或者一個數(shù)據(jù)庫賦予一套選項設(shè)置。在一個會話 開始的時候,裝載所涉及到的用戶和數(shù)據(jù)庫的缺省設(shè)置。命令 ALTER USER和ALTER DATABASE 分別用于配置這些設(shè)置。針對每個數(shù)據(jù)庫的設(shè)置將覆蓋任何從 postgres命令行或者配置文件收到的設(shè)置,然后接著 又被針對每個用戶的設(shè)置覆蓋;最后又會都被針對每個會話的設(shè)置覆蓋。
一些選項可以在獨立的 SQLSQL會話中修改,方法是使用 SET命令,比如:
SET ENABLE_SEQSCAN TO OFF;
如果允許用SET設(shè)置,這種針對每個數(shù)據(jù)庫的設(shè)置將覆蓋任何來自 其它方面的設(shè)置。有些參數(shù)不能通過SET改變:比如, 如果這些選項不重啟動PostgreSQL就無法合理控制其行為。 同樣,有些參數(shù)只能由超級用戶通過SET或ALTER修改, 而普通用戶不能修改。
SHOW命令允許檢查所有參數(shù)的當前值。
我們也可以用虛表pg_settings (在Section 45.55)里描述)來顯示和更新當前會話的運行 時參數(shù)。它等效于SHOW和SET,但是用起來更方便, 因為它可以和其它表連接起來使用,或者用任意用戶需要的選擇條件來查詢。