Arch manual pages

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。
-e
把缺省日期風格設置爲 "European",也就是說用"DMY"規則解釋日期輸入, 並且在一些日期輸出格式裏日子在月份前面打印。 參閱 Section 8.5 ``Date/Time Types'' 獲取更多細節。
-o filename
把所有服務器日誌輸出到 filename。 如果服務器是由 postmaster運行的, 則忽略這個選項,並且使用從 postmaster 繼承過來的stderr。
-P
掃描/更新系統記錄時忽略系統表。對系統表/索引使用 REINDEX 時需要這個選項。
-s
在每條命令結束時打印時間信息和其他統計信息。 這個開關對測試性能和調節緩衝區數量有好處。
-S sort-mem
聲明內部排序和散列在求助於臨時磁盤文件之前可以使用的內存數量。 該值是以 KB (千字節)爲單位的,缺省是 1024 KB。 注意對於複雜查詢,可能有好幾個並行的排序和/或散列, 而在它們把數據放到臨時文件前,每個都會允許使用最多 sort-mem KB的內存。

database
聲明要訪問的數據庫的名字。如果忽略掉則缺省爲用戶名。
-E
回顯所有命令。
-N
禁止把新行作爲語句分隔符。

還有幾個其他的選項可以聲明,主要用於調試用途。 這些東西在這裏列出只是給 PostgreSQL 系統開發人員使用的。 我們強烈反對使用這些選項。 另外這些選項的任何一項都可能在未來版本中消失而不加說明。
-f { s | i | m | n | h }
禁止某種掃描和連接方法的使用: s 和 i 分別關閉順序和索引掃描,而 n,m,和 h 分別關閉嵌套循環,融合(merge)和散列連接。

Note: 注意: 順序掃描和嵌套循環都不可能完全被關閉。 -fs 和 -fn 選項僅僅是在存在其他方法時阻 礙優化器使用這些方法罷了。

-O
允許修改系統表的結構。這個參數用於 initdb
-p database
告訴服務器服務器它是由一個 postmaster 啓動的並聲明要使用的數據庫等。
-t pa[rser] | pl[anner] | e[xecutor]
打印與每個主要系統模塊相關的查詢記時統計。 它不能和 -s選項一塊使用。
-v protocol
聲明這次會話使用的前/服務器協議的版本數。
-W seconds
一旦看見這個選項,進程就睡眠標出的秒數。 這樣就給開發者一些時間把調試器附着在該服務器進程上。
--describe-config
這個選項以 tab 分隔的 COPY 格式,倒出服務器內部配置變量,描述和缺省之。 設計它主要是給管理工具使用。

PGDATA
缺省數據目錄位置

對於其它的在單用戶模式裏有一點點影響的環境變量,請參閱 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