POSTGRES(1) PostgreSQL Server Applications POSTGRES(1)

postgres - 以單使用者模式執行一個 PostgreSQL伺服器

postgres [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ --describe-config ] [ -D datadir ] [ -e ] [ -E ] [ -f s | i | t | n | m | h ] [ -F ] [ -N ] [ -o filename ] [ -O ] [ -P ] [ -s | -t pa | pl | ex ] [ -S sort-mem ] [ -W seconds ] [ --name=value ] database

postgres [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ -D datadir ] [ -e ] [ -f s | i | t | n | m | h ] [ -F ] [ -o filename ] [ -O ] [ -p database ] [ -P ] [ -s | -t pa | pl | ex ] [ -S sort-mem ] [ -v protocol ] [ -W seconds ] [ --name=value ]

可執行程式 postgres 是真正處理查詢的 PostgreSQL 伺服器程序。 通常它是不會被直接呼叫的;而是啟動一個 postmaster 多使用者伺服器。


上面的第二種形式就是 postmaster(1) 呼叫 postgres 的方法(只是概念上的,因為 postmaster 和 postgres 實際上是一樣的程式); 我們不能這樣直接呼叫它。第一種形式以互動單使用者模式直接呼叫該伺服器。 這種用法的主要用途是在 initdb 做初始化時用。有時候它被用做除錯災難性恢復。


當從 shell 上以互動模式呼叫時,使用者可以輸入查詢並且結果會列印在螢幕上, 不過格式對開發人員更有用,對使用者卻差好多。 不過請記住,執行一個單使用者伺服器並不適合於除錯該伺服器, 因為沒有實際的程序間通訊和鎖動作發生。


當執行一個單使用者伺服器時,將把會話使用者設定為 ID 為 1 的使用者。 該使用者不必實際存在,因此一個獨立執行的伺服器可以用於對某些意外損壞的系統表中進行手工恢復。 在獨立執行模式下,系統隱含地賦予 ID 為 1 的使用者超級使用者許可權。


如果 postgres 是由一個 postmaster(1) 啟動的,那麼它繼承後者的所有選項集。另外 postgres 相關的選項可以用 -o 開關從 postmaster(1) 傳遞。


你可以透過設定一個配置檔案來避免鍵入這些選項。 參閱Section 16.4獲取細節。 有些(安全的)選項還可以從聯接過來的客戶端設定, 這樣就獲得了一種應用無關的方法。 比如,如果設定了 PGOPTIONS 環境變數, 那麼基於 libpq 的客戶端就都把那個字串傳遞給伺服器, 會解釋成 postgres 命令列選項。

選項 -A, -B, -c, -d, -D, -F, 和 --namepostmaster(1) 裡的有相同的含義。只是 -d 0 避免 postmaster(1) 的除錯級別傳播到 postgres。


把預設日期風格設定為 "European",也就是說用"DMY"規則解釋日期輸入, 並且在一些日期輸出格式裡日子在月份前面列印。 參閱 Section 8.5 ``Date/Time Types'' 獲取更多細節。

把所有伺服器日誌輸出到 filename。 如果伺服器是由 postmaster執行的, 則忽略這個選項,並且使用從 postmaster 繼承過來的stderr。

掃描/更新系統記錄時忽略系統表。對系統表/索引使用 REINDEX 時需要這個選項。

在每條命令結束時列印時間資訊和其他統計資訊。 這個開關對測試效能和調節緩衝區數量有好處。

宣告內部排序和雜湊在求助於臨時磁碟檔案之前可以使用的記憶體數量。 該值是以 KB (千位元組)為單位的,預設是 1024 KB。 注意對於複雜查詢,可能有好幾個並行的排序和/或雜湊, 而在它們把資料放到臨時檔案前,每個都會允許使用最多 sort-mem KB的記憶體。


宣告要訪問的資料庫的名字。如果忽略掉則預設為使用者名稱。

回顯所有命令。

禁止把新行作為語句分隔符。


還有幾個其他的選項可以宣告,主要用於除錯用途。 這些東西在這裡列出只是給 PostgreSQL 系統開發人員使用的。 我們強烈反對使用這些選項。 另外這些選項的任何一項都可能在未來版本中消失而不加說明。


禁止某種掃描和連線方法的使用: s 和 i 分別關閉順序和索引掃描,而 n,m,和 h 分別關閉巢狀迴圈,融合(merge)和雜湊連線。
Note: 注意: 順序掃描和巢狀迴圈都不可能完全被關閉。 -fs 和 -fn 選項僅僅是在存在其他方法時阻 礙最佳化器使用這些方法罷了。

允許修改系統表的結構。這個引數用於 initdb

告訴伺服器伺服器它是由一個 postmaster 啟動的並宣告要使用的資料庫等。

列印與每個主要系統模組相關的查詢記時統計。 它不能和 -s選項一塊使用。

宣告這次會話使用的前/伺服器協議的版本數。

一旦看見這個選項,程序就睡眠標出的秒數。 這樣就給開發者一些時間把偵錯程式附著在該伺服器程序上。

這個選項以 tab 分隔的 COPY 格式,倒出伺服器內部配置變數,描述和預設之。 設計它主要是給管理工具使用。


預設資料目錄位置


對於其它的在單使用者模式裡有一點點影響的環境變數,請參閱 postmaster(1).


要停止執行一個查詢,使用 SIGINT 給正在執行該命令的 postgres 程序發訊號。


要告訴 postgres 重新讀取配置檔案, 使用一個 SIGHUP 訊號。 通常我們最好給 postmaster 傳送 SIGHUP; postmaster 將隨後 SIGHUP 他的每個子程序。 但是有時候我們可能想只讓一個 postgres 程序重灌載配置檔案。

postmaster 使用 SIGTERM 告訴postgres程序正常退出, 而 SIGQUIT 是不 經過正常清理的退出。 這些訊號不應該由使用者使用。 給一個 postgres 程序傳送 SIGKILL 也是不明智的: postmaster 將把這個訊號解釋成一次在 postgres 裡的 崩潰, 並且會強制所有他的子 postgres 程序像在一個標準的崩潰-恢復過程裡一 樣退出。


用下面這樣的命令啟動一個獨立的伺服器

postgres -D /usr/local/pgsql/data other-options my_database
用 -D 給伺服器提供正確的資料庫目錄的路徑, 或者確保環境變數 PGDATA 已經正確設定。 同時還要聲名你象用的特定資料庫名字。


通常,獨立執行的伺服器把換行符當做命令輸入完成字元; 它還不懂分號的作用,因為那些東西是在 psql(1) 裡的。 要想把一行分成多行寫,你必需在除最後一個換行符以外的每個換行符前面敲一個反斜槓。


但是如果你使用 -N 命令列開關,那麼換行符就不會中止命令輸入。 伺服器將從標準輸入讀取資料,直到碰到檔案結尾(EOF), 然後把輸入當做一個單個的命令字串處理。這個時候反斜槓-換行符就不再當做特殊情況處理。


要退出會話,鍵入EOF (通常是 Control+D)。 如果你已經使用了 -N,需要用兩個連續的EOF來退出。


請注意獨立執行的伺服器不會提供複雜的行編輯功能(比如,沒有命令列歷史)。

initdb(1), ipcclean(1), postmaster(1)

譯者

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

2003-11-02 Application