<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # postgres ## Name postgres?--?PostgreSQL 數據庫服務器 ## Synopsis `postgres` [`_option_`...] ## 描述 `postgres`是PostgreSQL數據庫服務器。 客戶端應用程序為了訪問數據庫,將通過網絡或本地連接到一個運行中的 `postgres`進程。然后該`postgres` 實例將啟動一個獨立的服務器進程來處理這個連接。 一個`postgres`總是管理來自同一個數據庫集群的數據。 一個數據庫集群是一組在同一個文件系統位置("數據區")存放數據的數據庫。 一個系統上可以同時運行多個`postgres`進程, 只要他們使用不同的數據區和不同的端口號(見下文)。`postgres` 啟動時需要知道數據區的位置,該位置必須通過`-D`選項或`PGDATA` 環境變量指定;沒有缺省值。通常,`-D`或`PGDATA` 都直接指向由[initdb](#calibre_link-542)創建的數據區。其他可能的文件布局在 [Section 18.2](#calibre_link-1241)里面有討論。 缺省時`postgres`在前臺啟動并將日志信息輸出到標準錯誤。 但在實際應用中,`postgres`應當作為后臺進程啟動,而且多數是在系統啟動時自動啟動。 `postgres`還能以單用戶模式運行。這種用法主要用于[initdb](#calibre_link-542) 的初始化過程中。有時候它也被用于調試或災難性恢復。注意, 單用戶模式運行的服務器并不適合于調試,因為沒有實際的進程間通訊和鎖動作發生。 當從 shell 上以單用戶模式調用時,用戶可以輸入查詢, 然后結果會在屏幕上以一種更適合開發者閱讀(不適合普通用戶)的格式顯示出來。 在單用戶模式下,將把會話用戶 ID 設為 1 并賦予超級用戶權限。該用戶不必實際存在, 因此單用戶模式運行的服務器可以用于對某些意外損壞的系統表進行手工恢復。 ## 選項 `postgres`接受下列命令行參數。關于這些選項的更詳細討論請參考 [Chapter 18](#calibre_link-500)。你也可以通過設置一個配置文件來減少敲擊這些選項。 有些(安全的)選項還可以從連接過來的客戶端設置,以一種應用相關的方法僅對該會話生效。 比如,如果設置了`PGOPTIONS`環境變量,那么基于libpq 的客戶端就都把那個字符串傳遞給服務器,并被服務器解釋成`postgres`命令行選項。 ### 通用用途 `-A 0|1` 打開運行時斷言檢查,是檢測編程錯誤的調試幫助。只有在編譯PostgreSQL 時打開了它,你才能使用它。缺省是打開。 `-B` `_nbuffers_` 為服務器進程分配和管理的共享內存緩沖區數量。這個參數的缺省值是 initdb自動選擇的;聲明這個選項等同于設置 [shared_buffers](#calibre_link-1370)配置參數。 `-c` `_name_`=`_value_` 設置一個命名的運行時參數。PostgreSQL支持的配置參數在 [Chapter 18](#calibre_link-500)里描述。大多數其它命令行選項實際上都是這樣的參數賦值的短形式。 `-c`可以出現多次從而設置多個參數。 `-C` `_name_` 打印命名的運行時參數的值,然后退出。(參閱上面的`-c`選項獲取詳細信息。) 這個選項可以在一個運行的服務器上使用,返回來自`postgresql.conf`的值, 通過在這個調用中提供的參數修改。當集群啟動時,它不反應提供的參數。 這個選項本應為與服務器進程交互的其他程序,例如[pg_ctl](#calibre_link-544), 查詢配置參數值。面向用戶的應用應該使用xref linkend="sql-show"&gt;或 `pg_settings`視圖。 `-d` `_debug-level_` 設置調試級別。數值越高,寫到服務器日志的調試輸出越多。取值范圍是 1 到 5 。 還可以針對某次單獨的會話使用`-d 0`來防止從父`postgres` 進程繼承日志級別。 `-D` `_datadir_` 聲明數據庫配置文件的文件系統路徑。細節詳見[Section 18.2](#calibre_link-1241)。 `-e` 把缺省日期風格設置為"European",也就是說用`DMY`規則解釋日期輸入, 并且在一些日期輸出格式里日子在月份前面打印。參閱[Section 8.5](#calibre_link-783)獲取更多細節。 `-F` 關閉`fsync`調用以提高性能,但是要冒系統崩潰時數據毀壞的風險。 聲明這個選項等效關閉了[fsync](#calibre_link-1214)參數。在使用之前閱讀詳細文檔! `-h` `_hostname_` 指定`postgres`偵聽來自前端應用 TCP/IP 連接的 IP 主機名或地址。 數值也可以是一個用逗號分隔的地址列表,或者`*`表示監聽所有可用的地址。 空值表示不監聽任何 IP 地址,而只使用 Unix 域套接字與服務器連接。 缺省只監聽localhost。 聲明這個選項等效于設置[listen_addresses](#calibre_link-1559)配置參數。 `-i` 這個選項允許遠程客戶通過 TCP/IP(網際域套接字)與服務器通訊。沒有這個選項, 服務器將只接受本地連接。這個選項等效于在`postgresql.conf` 中或者通過`-h`選項將`listen_addresses`設為`*`。 這個選項已經廢棄了,因為它不能實現[listen_addresses](#calibre_link-1559)的所有功能。 所以最好直接設置`listen_addresses`。 `-k` `_directory_` 指定`postgres`偵聽來自前端應用連接的 Unix 域套接字的目錄。 該值也可以是逗號分隔的目錄列表。空值表明不監聽任何 Unix 域套接字,在這種情況下, 只有TCP/IP套接字可以用來連接到服務器。缺省通常是`/tmp`, 但是可以在編譯的時候修改。聲明這個選項等同于設置[unix_socket_directories](#calibre_link-655) 配置參數。 `-l` 這個選項使用SSL進行的安全通訊。要使用這個選項, 編譯PostgreSQL時你必須打開了SSL支持。 有關使用SSL的信息,請參考[Section 17.9](#calibre_link-657)。 `-N` `_max-connections_` 設置最多允許同時連接多少個客戶端(也就是最多同時運行多少個服務器進程)。 這個參數的缺省值自動通過initdb選擇。 聲明這個選項等效于聲明[max_connections](#calibre_link-441)配置參數。 `-o` `_extra-options_` 在`_extra-options_` 里面指定的命令行選項將被傳遞給所有由這個`postgres`派生的服務進程。 如果選項字符串包含任何空白,那么整個字符串必須用引號界定。 反對使用該選項,所有服務器進程的命令行選項都可以直接在`postgres` 命令行上指定。 `-p` `_port_` 指定`postgres`偵聽客戶端連接的 TCP/IP 端口或本地 Unix 域套接字文件的擴展。 缺省的端口號是環境變量`PGPORT`的值。如果`PGPORT`沒有設置, 那么缺省是 PostgreSQL 編譯時指定的值(通常是 5432)。如果你聲明了一個非缺省端口, 那么所有前端應用都必須用命令行選項或者`PGPORT`聲明同一個端口。 `-s` 在每條命令結束時打印時間信息和其它統計信息。這個選項對測試性能和調節緩沖區數量有好處。 `-S` `_work-mem_` 聲明內部排序和散列在求助于臨時磁盤文件之前可以使用的內存數量。 參閱[Section 18.4.1](#calibre_link-1408)里描述的配置變量`work_mem`。 `-V``--version` 打印postgres版本然后退出。 `--``_name_`=`_value_` 設置一個命名的運行時參數;其縮寫形式是`-c`。 `--describe-config` 以制表符分隔的`COPY`格式,導出服務器內部配置變量、描述、缺省值。 設計它主要是給管理工具使用。 `-?` `--help` 顯示關于postgres命令行參數的幫助然后退出。 ### 部分內部選項 這里描述的選項主要用于調試用途,并且在某些情況下幫助嚴重損壞的數據庫恢復。 不應該在生產數據庫的設置中使用這些選項。在這里列出只是給PostgreSQL 系統開發人員使用的。另外這些選項都可能在未來版本中改變或刪除而不加說明。 `-f` `{ s | i | o | b | t | n | m | h }` 禁止某種掃描和連接方法的使用:`s`和`i` 分別關閉順序和索引掃描,`o`, `b` 和 `t`分別關閉只有索引掃描、位圖索引掃描和TID掃描, 而`n`, `m`, 和 `h` 分別關閉嵌套循環,融合(merge)和 Hash 連接。 順序掃描和嵌套循環都不可能完全被關閉。`-fs`和`-fn` 選項僅僅是在存在其它方法時阻礙優化器使用這些方法罷了。 `-n` 該選項主要用于調試導致服務器進程異常崩潰的問題。 對付這種情況的一般策略是通知所有其它服務器進程終止并重新初始化共享內存和信號燈。 這是因為一個出錯的服務器進程可能在終止之前就已經對共享的東西造成了破壞。 該選項指定`postgres`不重新初始化共享數據結構。 一個有經驗的系統程序員這時就可以使用調試器檢查共享內存和信號燈狀態。 `-O` 允許修改系統表的結構。這個參數用于`initdb`。 `-P` 讀取系統表時忽略系統索引,但在更改數據時仍然更新索引。 這對于從索引已經損壞的系統表中恢復是很有幫助的。 `-t` `pa[rser] | pl[anner] | e[xecutor]` 打印與每個主要系統模塊相關的查詢記時統計。它不能和`-s`選項一起使用。 `-T` 該選項主要用于調試導致服務器進程異常崩潰的問題。 對付這種情況的一般策略是通知所有其它服務器進程終止并重新初始化共享內存和信號燈。 這是因為一個出錯的服務器進程可能在終止之前就已經對共享的東西造成了破壞。 該選項指定`postgres`通過發送`SIGSTOP` 信號停止其他所有服務器進程,但是并不讓它們退出。 這樣就允許系統程序員手動從所有服務器進程搜集內核轉儲。 `-v` `_protocol_` 聲明這次會話使用的前/后服務器協議的版本數。該選項僅在內部使用。 `-W` `_seconds_` 一旦看見這個選項,進程就睡眠標出的秒數。這樣就給開發者一些時間把調試器附著在該服務器進程上。 ### 單用戶模式的選項 下面的選項僅在單用戶模式下可用。 `--single` 選中單用戶模式。這個必須是命令行中的第一個選項。 `_database_` 要訪問的數據庫名字。這個必須是命令行中的最后一個選項。如果忽略掉則缺省為用戶名。 `-E` 回顯所有命令。 `-j` 禁止使用新行作為語句分隔符。 `-r` `_filename_` 將所有服務器輸出日志保存到`_filename_`中。 在多用戶模式下該選項將被忽略,所有進程都將使用stderr。 ## 環境變量 `PGCLIENTENCODING` 客戶端使用的缺省字符編碼。客戶端可以獨立地覆蓋它。這個值也可以在配置文件里設置。 `PGDATA` 缺省數據目錄位置。 `PGDATESTYLE` 運行時參數[DateStyle](#calibre_link-787)的缺省值。現在反對使用該環境變量。 `PGPORT` 缺省端口號(最好在配置文件中設置)。 `TZ` 服務器的時區。 ## 診斷 一個提到了`semget`或`shmget`的錯誤信息可能意味著你需要重新配置你的內核, 提供足夠的共享內存和信號燈。更多討論,參閱[Section 17.4](#calibre_link-1238)。 你也可以通過降低[shared_buffers](#calibre_link-1370)值以減少PostgreSQL 的共享內存的消耗,或者降低[max_connections](#calibre_link-441)值減少 PostgreSQL的信號燈的消耗。 如果碰到一個說另外一個服務器正在運行的錯誤信息,可以根據不同的系統使用命令 ``` <samp class="literal">$</samp> <kbd class="literal">ps ax | grep postgres</kbd> ``` 或 ``` <samp class="literal">$</samp> <kbd class="literal">ps -ef | grep postgres</kbd> ``` 如果確信沒有沖突的服務器正在運行,那么你可以刪除消息里提到的鎖文件然后再次運行。 抱怨無法綁定端口的錯誤信息可能表明該端口已經被其它非PostgreSQL 進程使用。如果終止`postgres`后又馬上用同一個端口運行它, 也可能得到這個錯誤信息;這時,你必須多等幾秒,等操作系統關閉了該端口后再試。 最后,如果你使用了一個操作系統認為是保留的端口,也可能導致這個錯誤信息。例如, 許多 Unix 版本認為低于 1024 的端口號是"可信任的", 因而只有 Unix 超級用戶可以使用它們。 ## 注意 [pg_ctl](#calibre_link-544)工具可以用于安全而有效地啟停`postgres`服務器。 如果有可能,_不要_使用`SIGKILL` 殺死主`postgres`服務器進程。這樣會阻止`postgres` 在退出前釋放它持有的系統資源(例如共享內存和信號燈)。這樣可能會影響到將來啟動新的 `postgres`進程。 可以使用`SIGTERM`, `SIGINT`, `SIGQUIT` 信號正常結束`postgres`服務器進程。 第一個信號將等待所有的客戶端退出后才退出。第二個將強制斷開所有客戶端, 而第三個將不停止立刻退出,導致在重啟時的恢復運行。 `SIGHUP`會重新加載服務器配置文件。 也可以向一個單獨的服務器進程發送`SIGHUP`信號,但是這樣做沒什么意義。 要取消一個正在運行的查詢,可以向正在執行該查詢的進程發送`SIGINT`信號。 要終止一個后端進程,可以向那個進程發送`SIGTERM`信號。也可以參閱 [Section 9.26.2](#calibre_link-1566)里面的`pg_cancel_backend` 和 `pg_terminate_backend`獲取這兩個動作的相等SQL調用。 `postgres`服務器發送`SIGQUIT` 信號告訴子服務器進程立即退出且不做清理工作,用戶應當盡量_避免_ 使用該信號。同時,發送`SIGKILL`信號也是不明智的: 主`postgres`進程將把這個信號當作崩潰信號, 然后會強制其他兄弟進程作為標準的崩潰回復過程退出。 ## 臭蟲 `--`選項在FreeBSD或 OpenBSD上無法運行,應該使用`-c`。 這在受影響的系統里是個臭蟲;如果這個毛病沒有修補好, 將來的PostgreSQL版本將提供一個繞開的辦法。 ## 用法 啟動一個單用戶模式的服務器: ``` <kbd class="literal">postgres --single -D /usr/local/pgsql/data `_other-options_` my_database</kbd> ``` 用`-D`給服務器提供正確的數據庫目錄的路徑, 或者確保環境變量`PGDATA`已經正確設置。同時還要聲名你想用的特定數據庫名字。 通常,單用戶模式的服務器把換行符當做命令輸入完成字符;它還不懂分號的作用, 因為那些東西是在psql里的。要想把一行分成多行寫, 你必需在除最后一個換行符以外的每個換行符前面敲一個反斜杠。 但是如果使用了`-j`命令行選項,新行將不被當作命令結束符。 此時服務器將從標準輸入一直讀取到EOF標志為止, 然后把所有讀到的內容當作一個完整的命令字符串看待, 并且反斜杠與換行符也被當作普通字符來看待。 輸入EOF(**Control**+**D**) 即可退出會話。如果你已經使用了`-j`則必須連續使用兩個EOF才行。 請注意單用戶模式運行的服務器不會提供復雜的行編輯功能(比如,沒有命令行歷史)。 單用戶模式也不做任何后臺處理,像自動檢查點。 ## 例子 用缺省值在后臺啟動`postgres`: ``` <samp class="literal">$</samp> <kbd class="literal">nohup postgres >logfile 2>&1 </dev/null &</kbd> ``` 在指定的端口啟動`postgres`,如1234: ``` <samp class="literal">$</samp> <kbd class="literal">postgres -p 1234</kbd> ``` 要連接到這個服務器使用psql,用 -P 選項指定這個端口: ``` <samp class="literal">$</samp> <kbd class="literal">psql -p 1234</kbd> ``` 或者設置環境變量`PGPORT`: ``` <samp class="literal">$</samp> <kbd class="literal">export PGPORT=1234</kbd> <samp class="literal">$</samp> <kbd class="literal">psql</kbd> ``` 命名的運行時參數可以用下列的風格之一設置: ``` <samp class="literal">$</samp> <kbd class="literal">postgres -c work_mem=1234</kbd> <samp class="literal">$</samp> <kbd class="literal">postgres --work-mem=1234</kbd> ``` 兩種形式都覆蓋那些現有的在`postgresql.conf`里面的`work_mem`設置。 請注意在參數名里的下劃線在命令行上可以寫成下劃線,也可以寫成連字符。 除了用于短期的實驗以外,更好的習慣是編輯`postgresql.conf`里面的設置, 而不是倚賴命令行開關設置參數。 ## 又見 [initdb](#calibre_link-542), [pg_ctl](#calibre_link-544)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看