既然使用了PostGreSQL,僅僅知道寫常規的SQL語句啦,視圖啦,觸發器啦等等,畢竟是主流數據庫,因此這些和其餘數據庫系統基本上差很少,就連語法都幾乎同樣,不一樣的就屬整個系統的架構和系統配置不一樣啦,這邊不談架構,如今的水平也無法談,仍是從使用的角度來看,談談經常使用的系統配置相關技術吧。sql
這邊主要針對四部分來具體說說,服務器進程的啓動和關閉、服務器基本參數相關配置、系統內存優化相關配置、常見問題參數舉例。數據庫
下面是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]
這裏只是給出最爲經常使用的使用方式,即數據庫服務器的正常啓動和關閉。 服務器
start表示啓動postgres服務器進程。
-D指定數據庫服務器的初始目錄的存放路徑。
-l指定數據庫服務器進程的日誌文件 markdown
/> pg_ctl -w start -D /opt/PostgreSQL/9.4/data -l /opt/PostgreSQL/9.4/data/pg_log/startup.log
stop表示中止postgres服務器進程
-m fast在關閉系統時,使用fast的關閉模式。 架構
/> pg_ctl stop -m fast -w -D /opt/PostgreSQL/9.4/data
在PostgreSQL中,全部配置參數名都是大小寫不敏感的。每一個參數均可以接受四種類型的值,它們分別是布爾、整數、浮點數和字符串。其中布爾值能夠是ON、OFF、TRUE、FALSE、YES、NO、1和0。包含這些參數的配置文件是postgresql.conf,該文件一般存放在initdb初始化的數據(data)目錄下,見以下配置片斷: post
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系統表的方式來檢索感興趣的系統參數。
一、shared_buffers(integer)
設置數據庫服務器可使用的共享內存數量。缺省狀況下能夠設置爲32MB,可是不要少於128KB。由於該值設置的越高對系統的性能越有好處。該配置參數只能在數據庫啓動時設置。此時,若是你有一臺專用的數據庫服務器,其內存爲1G或者更多,那麼咱們推薦將該值設置爲系統內存的25%
二、work_mem(integer)
PostgreSQL在執行排序操做時,會根據work_mem的大小決定是否將一個大的結果集拆分爲幾個小的和work_mem差很少大小的臨時文件。顯然拆分的結果是下降了排序的速度。所以增長work_mem有助於提升排序的速度。然而須要指出的是,若是系統中同時存在多個排序操做,那麼每一個操做在排序時使用的內存數量均爲work_mem,所以在咱們設置該值時須要注意這一問題
三、maintence_work_mem(integer)
指定在維護性操做中使用的最大內存數,如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等,
該配置的缺省值爲16MB。由於每一個會話在同一時刻只能執行一個該操做,因此使用的頻率不高,可是這些指令每每消耗較多的系統資源,所以應該儘快讓這些指令快速執行完畢
在使用PostGreSQL進行團隊項目開發時,確定會遇到相似遠程訪問數據、數據庫連接限制這樣的需求,固然PostGreSQL自己確定不會默認開啓這些功能的,因此須要手動調整參數。
一、開啓遠程訪問數據庫權限須要作以下操做
pg_hba.conf 文件中:
# IPv4 local connections: host all all 127.0.0.1/32 md5 host all all 0.0.0.0/0 md5
第一行爲指定IP指定,第二行爲全部IP,通常狀況下是不開啓全部IP權限的,由於安全。
postgresql.conf 文件中:
listen_addresses = '*' # what IP address(es) to listen on;
默認是‘*’ 監聽全部來源。
二、修改服務器鏈接限制須要作以下操做
postgresql.conf 文件中:
max_connection=1000
1000即爲最大客戶端鏈接數。
以上就是經常使用的一些系統配置,固然還有好多好多,這麼大的一個數據庫系統不可能就這一點點,以上只是列出經常使用配置,之後確定會遇到其餘各類配置,慢慢學習進步中。。。