PostgreSQL教程(十一):服務(wù)器配置
一、服務(wù)器進(jìn)程的啟動(dòng)和關(guān)閉:
下面是pg_ctl命令的使用方法和常用選項(xiàng),需要指出的是,該命令是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]
選項(xiàng) | 描述 |
-D | 指定數(shù)據(jù)庫(kù)存儲(chǔ)的路徑 |
-l | 指定服務(wù)器進(jìn)程的日志文件 |
-s | 僅打印錯(cuò)誤信息,不打印普通信息 |
-t SECS | 當(dāng)使用-w選項(xiàng)時(shí)等待的秒數(shù) |
-w | 等待直到數(shù)據(jù)庫(kù)操作完成(對(duì)于stop而言,該選項(xiàng)時(shí)缺省選項(xiàng)) |
-W | 不等待任何操作的完成 |
--help | 顯示幫助信息 |
--version | 顯示版本信息 |
-m | 對(duì)于stop和restart操作,可以指定關(guān)閉模式 |
系統(tǒng)關(guān)閉模式 | |
smart | 不在接收新的連接,直到當(dāng)前已有的連接都斷開(kāi)之后才退出系統(tǒng) |
fast | 不在接收新的連接請(qǐng)求,主動(dòng)關(guān)閉已經(jīng)建立的連接,之后退出系統(tǒng) |
immediate | 立即退出,但是在restart的時(shí)候需要有恢復(fù)的操作被執(zhí)行 |
這里我們只是給出最為常用的使用方式,即數(shù)據(jù)庫(kù)服務(wù)器的正常啟動(dòng)和關(guān)閉。
#start表示啟動(dòng)postgres服務(wù)器進(jìn)程。
#-D指定數(shù)據(jù)庫(kù)服務(wù)器的初始目錄的存放路徑。
#-l指定數(shù)據(jù)庫(kù)服務(wù)器進(jìn)程的日志文件
/> pg_ctl -w start -D /opt/PostgreSQL/9.1/data -l /opt/PostgreSQL/9.1/data/pg_log/startup.log
#stop表示停止postgres服務(wù)器進(jìn)程
#-m fast在關(guān)閉系統(tǒng)時(shí),使用fast的關(guān)閉模式。
/> pg_ctl stop -m fast -w -D /opt/PostgreSQL/9.1/data
二、服務(wù)器配置:
1. 設(shè)置參數(shù):
在PostgreSQL中,所有配置參數(shù)名都是大小寫(xiě)不敏感的。每個(gè)參數(shù)都可以接受四種類型的值,它們分別是布爾、整數(shù)、浮點(diǎn)數(shù)和字符串。其中布爾值可以是ON、OFF、TRUE、FALSE、YES、NO、1和0。包含這些參數(shù)的配置文件是postgresql.conf,該文件通常存放在initdb初始化的數(shù)據(jù)(data)目錄下,見(jiàn)如下配置片段:
# 這是一個(gè)注釋
log_connections = yes
log_destination = 'syslog'
search_path = '$user, public'
井號(hào)(#)開(kāi)始的行為注釋行,如果配置值中包含數(shù)字,則需要用單引號(hào)括起。如果參數(shù)值本身包含單引號(hào),我們可以寫(xiě)兩個(gè)單引號(hào)(推薦方法)或用反斜扛包圍。
這里需要注意的是,并非所有配置參數(shù)都可以在服務(wù)器運(yùn)行時(shí)執(zhí)行動(dòng)態(tài)修改,有些參數(shù)在修改后,只能等到服務(wù)器重新啟動(dòng)后才能生效。
PostgreSQL還提供了另外一種修改配置參數(shù)的方法,即在命令行上直接執(zhí)行修改命令,如:
/> postgres -c log_connections=yes -c log_destination='syslog'
如果此時(shí)命令行設(shè)置的參數(shù)和配置文件中的參數(shù)相互沖突,那么命令行中給出的參數(shù)將覆蓋配置文件中已有的參數(shù)值。除此之外,我們還可以通過(guò)ALTER DATABASE和ALTER USER等PostgreSQL的數(shù)據(jù)定義命令來(lái)分別修改指定數(shù)據(jù)庫(kù)或指定用戶的配置信息。其中針對(duì)數(shù)據(jù)庫(kù)的設(shè)置將覆蓋任何從postgres命令行或者配置文件從給出的設(shè)置,然后又會(huì)被針對(duì)用戶的設(shè)置覆蓋,最后又都會(huì)被每會(huì)話的選項(xiàng)覆蓋。下面是當(dāng)服務(wù)器配置出現(xiàn)沖突時(shí),PostgreSQL服務(wù)器將會(huì)采用哪種方式的優(yōu)先級(jí),如:
1). 基于會(huì)話的配置;
2). 基于用戶的配置;
3). 基于數(shù)據(jù)庫(kù)的配置;
4). postgres命令行指定的配置;
5). 配置文件postgresql.conf中給出的配置。
最后需要說(shuō)明的是,有些設(shè)置可以通過(guò)PostgreSQL的set命令進(jìn)行設(shè)置,如在psql中我們可以輸入:
SET ENABLE_SEQSCAN TO OFF;
也可以通過(guò)show命令來(lái)顯示指定配置的當(dāng)前值,如:
SHOW ENABLE_SEQSCAN;
與此同時(shí),我們也可以手工查詢pg_settings系統(tǒng)表的方式來(lái)檢索感興趣的系統(tǒng)參數(shù)。
三、內(nèi)存相關(guān)的參數(shù)配置:
1. shared_buffers(integer):
設(shè)置數(shù)據(jù)庫(kù)服務(wù)器可以使用的共享內(nèi)存數(shù)量。缺省情況下可以設(shè)置為32MB,但是不要少于128KB。因?yàn)樵撝翟O(shè)置的越高對(duì)系統(tǒng)的性能越有好處。該配置參數(shù)只能在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)設(shè)置。
此時(shí),如果你有一臺(tái)專用的數(shù)據(jù)庫(kù)服務(wù)器,其內(nèi)存為1G或者更多,那么我們推薦將該值設(shè)置為系統(tǒng)內(nèi)存的25%。
2. work_mem(integer):
PostgreSQL在執(zhí)行排序操作時(shí),會(huì)根據(jù)work_mem的大小決定是否將一個(gè)大的結(jié)果集拆分為幾個(gè)小的和work_mem差不多大小的臨時(shí)文件。顯然拆分的結(jié)果是降低了排序的速度。因此增加work_mem有助于提高排序的速度。然而需要指出的是,如果系統(tǒng)中同時(shí)存在多個(gè)排序操作,那么每個(gè)操作在排序時(shí)使用的內(nèi)存數(shù)量均為work_mem,因此在我們?cè)O(shè)置該值時(shí)需要注意這一問(wèn)題。
3. maintence_work_mem(integer):
指定在維護(hù)性操作中使用的最大內(nèi)存數(shù),如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等,該配置的缺省值為16MB。因?yàn)槊總€(gè)會(huì)話在同一時(shí)刻只能執(zhí)行一個(gè)該操作,所以使用的頻率不高,但是這些指令往往消耗較多的系統(tǒng)資源,因此應(yīng)該盡快讓這些指令快速執(zhí)行完畢。
- asp.net實(shí)現(xiàn)Postgresql快速寫(xiě)入/讀取大量數(shù)據(jù)實(shí)例
- 圖文詳解mybatis+postgresql平臺(tái)搭建步驟
- PostgreSQL教程(二十):PL/pgSQL過(guò)程語(yǔ)言
- PostgreSQL教程(十八):客戶端命令(2)
- PostgreSQL教程(十七):客戶端命令(1)
- PostgreSQL教程(十五):系統(tǒng)表詳解
- 在windows下手動(dòng)初始化PostgreSQL數(shù)據(jù)庫(kù)教程
- Python使用PyGreSQL操作PostgreSQL數(shù)據(jù)庫(kù)教程
- Windows下PostgreSQL安裝圖解
- Visual Studio(VS2017)配置C/C++ PostgreSQL9.6.3開(kāi)發(fā)環(huán)境
相關(guān)文章
詳解PostgreSQL?14.4安裝使用及一些安裝的異常問(wèn)題
這篇文章主要介紹了PostgreSQL?14.4的安裝以及使用以及一些安裝的異常,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07PostgreSQL自動(dòng)更新時(shí)間戳實(shí)例代碼
最近有這么一個(gè)工程,需要使用postgresql數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中的好幾個(gè)表中都需要時(shí)間戳這個(gè)字段,這篇文章主要給大家介紹了關(guān)于PostgreSQL自動(dòng)更新時(shí)間戳的相關(guān)資料,需要的朋友可以參考下2021-11-11PostgreSQL教程(二十):PL/pgSQL過(guò)程語(yǔ)言
這篇文章主要介紹了PostgreSQL教程(二十):PL/pgSQL過(guò)程語(yǔ)言,本文講解了、PL/pgSQL概述、PL/pgSQL的結(jié)構(gòu)、聲明、基本語(yǔ)句、控制結(jié)構(gòu)等內(nèi)容,需要的朋友可以參考下2015-05-05Navicat連接postgresql時(shí)出現(xiàn)'datlastsysoid?does?not?exist&
這篇文章主要給大家介紹了關(guān)于Navicat連接postgresql時(shí)出現(xiàn)'datlastsysoid?does?not?exist'報(bào)錯(cuò)問(wèn)題的完美解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02springboot 沒(méi)法掃描到repository的解決
這篇文章主要介紹了springboot 沒(méi)法掃描到repository的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01postgresql 獲取兩個(gè)時(shí)間類型小時(shí)差值案例
這篇文章主要介紹了postgresql 獲取兩個(gè)時(shí)間類型小時(shí)差值案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12PostgreSQL創(chuàng)建新用戶所遇見(jiàn)的權(quán)限問(wèn)題以及解決辦法
這篇文章主要給大家介紹了關(guān)于PostgreSQL創(chuàng)建新用戶所遇見(jiàn)的權(quán)限問(wèn)題以及解決辦法, 在PostgreSQL中創(chuàng)建一個(gè)新用戶非常簡(jiǎn)單,但可能會(huì)遇到權(quán)限問(wèn)題,需要的朋友可以參考下2023-09-09Debian中PostgreSQL數(shù)據(jù)庫(kù)安裝配置實(shí)例
這篇文章主要介紹了Debian中PostgreSQL數(shù)據(jù)庫(kù)安裝配置實(shí)例,一個(gè)簡(jiǎn)明教程,需要的朋友可以參考下2014-06-06postgreSQL中的內(nèi)連接和外連接實(shí)現(xiàn)操作
這篇文章主要介紹了postgreSQL中的內(nèi)連接和外連接實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01PostgreSQL導(dǎo)出數(shù)據(jù)庫(kù)表(或序列)的結(jié)構(gòu)和數(shù)據(jù)實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于PostgreSQL導(dǎo)出數(shù)據(jù)庫(kù)表(或序列)的結(jié)構(gòu)和數(shù)據(jù)的相關(guān)資料,你可以使用pg_dump命令來(lái)導(dǎo)出PostgreSQL數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)和數(shù)據(jù),需要的朋友可以參考下2023-10-10