PostgreSQL教程(十一):伺服器配置,

來源:互聯網
上載者:User

PostgreSQL教程(十一):伺服器配置,

一、伺服器處理序的啟動和關閉:

    下面是pg_ctl命令的使用方法和常用選項,需要指出的是,該命令是postgres命令的封裝體,因此在使用上比直接使用postgres更加方便。
複製代碼 代碼如下:
    pg_ctl init[db] [-D DATADIR] [-s] [-o "OPTIONS"]
    pg_ctl start     [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"]
    pg_ctl stop     [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
    pg_ctl restart  [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]
    pg_ctl reload  [-D DATADIR] [-s]
    pg_ctl status  [-D DATADIR]
    pg_ctl promote [-D DATADIR] [-s]

選項 描述
-D 指定資料庫儲存的路徑
-l 指定伺服器處理序的記錄檔
-s 僅列印錯誤資訊,不列印普通訊息
-t SECS 當使用-w選項時等待的秒數
-w 等待直到資料庫操作完成(對於stop而言,該選項時預設選項)
-W 不等待任何操作的完成
--help 顯示協助資訊
--version 顯示版本資訊
-m 對於stop和restart操作,可以指定關閉模式
系統關閉模式  
smart 不在接收新的串連,直到當前已有的串連都斷開之後才退出系統
fast 不在接收新的串連請求,主動關閉已經建立的串連,之後退出系統
immediate 立即退出,但是在restart的時候需要有恢複的操作被執行

  這裡我們只是給出最為常用的使用方式,即資料庫伺服器的正常啟動和關閉。
    #start表示啟動postgres伺服器處理序。
    #-D指定資料庫伺服器的初始目錄的存放路徑。
    #-l指定資料庫伺服器進程的記錄檔
    /> pg_ctl -w start -D /opt/PostgreSQL/9.1/data -l /opt/PostgreSQL/9.1/data/pg_log/startup.log
    #stop表示停止postgres伺服器處理序
    #-m fast在關閉系統時,使用fast的關閉模式。
    /> pg_ctl stop -m fast -w -D /opt/PostgreSQL/9.1/data

二、伺服器配置:

    1. 設定參數:
    在PostgreSQL中,所有配置參數名都是大小寫不敏感的。每個參數都可以接受四種類型的值,它們分別是布爾、整數、浮點數和字串。其中布爾值可以是ON、OFF、TRUE、FALSE、YES、NO、1和0。包含這些參數的設定檔是postgresql.conf,該檔案通常存放在initdb初始化的資料(data)目錄下,見如下配置片段:
複製代碼 代碼如下:
    # 這是一個注釋
    log_connections = yes
    log_destination = 'syslog'
    search_path = '$user, public'
 
    井號(#)開始的行為注釋行,如果配置值中包含數字,則需要用單引號括起。如果參數值本身包含單引號,我們可以寫兩個單引號(推薦方法)或用反斜扛包圍。   
    這裡需要注意的是,並非所有配置參數都可以在伺服器運行時執行動態修改,有些參數在修改後,只能等到伺服器重新啟動後才會生效。
    PostgreSQL還提供了另外一種修改配置參數的方法,即在命令列上直接執行修改命令,如:
 複製代碼 代碼如下:
    /> postgres -c log_connections=yes -c log_destination='syslog'
 
    如果此時命令列設定的參數和設定檔中的參數相互衝突,那麼命令列中給出的參數將覆蓋設定檔中已有的參數值。除此之外,我們還可以通過ALTER DATABASE和ALTER USER等PostgreSQL的資料定義命令來分別修改指定資料庫或指定使用者的配置資訊。其中針對資料庫的設定將覆蓋任何從postgres命令列或者設定檔從給出的設定,然後又會被針對使用者的設定覆蓋,最後又都會被每會話的選項覆蓋。下面是當伺服器配置出現衝突時,PostgreSQL伺服器將會採用哪種方式的優先順序,如:

    1). 基於會話的配置;
    2). 基於使用者的配置;
    3). 基於資料庫的配置;
    4). postgres命令列指定的配置;
    5). 設定檔postgresql.conf中給出的配置。

    最後需要說明的是,有些設定可以通過PostgreSQL的set命令進行設定,如在psql中我們可以輸入:
 複製代碼 代碼如下:
    SET ENABLE_SEQSCAN TO OFF;
 
    也可以通過show命令來顯示指定配置的當前值,如:
 複製代碼 代碼如下:
    SHOW ENABLE_SEQSCAN;
 
    與此同時,我們也可以手工查詢pg_settings系統資料表的方式來檢索感興趣的系統參數。

三、記憶體相關的參數配置:

    1. shared_buffers(integer):

    設定資料庫伺服器可以使用的共用記憶體數量。預設情況下可以設定為32MB,但是不要少於128KB。因為該值設定的越高對系統的效能越有好處。該配置參數只能在資料庫啟動時設定。
    此時,如果你有一台專用的資料庫伺服器,其記憶體為1G或者更多,那麼我們推薦將該值設定為系統記憶體的25%。
    
    2. work_mem(integer):

    PostgreSQL在執行排序操作時,會根據work_mem的大小決定是否將一個大的結果集拆分為幾個小的和work_mem差不多大小的臨時檔案。顯然拆分的結果是降低了排序的速度。因此增加work_mem有助於提高排序的速度。然而需要指出的是,如果系統中同時存在多個排序操作,那麼每個操作在排序時使用的記憶體數量均為work_mem,因此在我們設定該值時需要注意這一問題。
    
    3. maintence_work_mem(integer):

    指定在維護性操作中使用的最大記憶體數,如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等,該配置的預設值為16MB。因為每個會話在同一時刻只能執行一個該操作,所以使用的頻率不高,但是這些指令往往消耗較多的系統資源,因此應該儘快讓這些指令快速執行完畢。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.