溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么查看Postgresql配置文件

發(fā)布時(shí)間:2021-11-10 10:19:16 來源:億速云 閱讀:173 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容介紹了“怎么查看Postgresql配置文件”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

如果要查看配置文件中的一些選項(xiàng),則可以登錄psql后 使用 命令來查看;

show  選項(xiàng)名;

show all;  #查看所有數(shù)據(jù)庫參數(shù)的值

主要選項(xiàng):

選項(xiàng)默認(rèn)值說明是否優(yōu)化原因
max_connections100允許客戶端的最大并發(fā)連接數(shù)目因?yàn)樵跍y試的過程中,100個(gè)連接已經(jīng)足夠
fsyncon強(qiáng)制把數(shù)據(jù)同步更新到磁盤因?yàn)橄到y(tǒng)的IO壓力很大,為了更好的測試其他配置的影響,把改參數(shù)改為off
shared_buffers24MB決定有多少內(nèi)存可以被PostgreSQL用于緩存數(shù)據(jù)(推薦內(nèi)存的1/4)在IO壓力很大的情況下,提高該值可以減少IO
work_mem1MB使內(nèi)部排序和一些復(fù)雜的查詢都在這個(gè)buffer中完成有助提高排序等操作的速度,并且減低IO
effective_cache_size128MB優(yōu)化器假設(shè)一個(gè)查詢可以用的最大內(nèi)存,和shared_buffers無關(guān)(推薦內(nèi)存的1/2)設(shè)置稍大,優(yōu)化器更傾向使用索引掃描而不是順序掃描
maintenance_work_mem16MB這里定義的內(nèi)存只是被VACUUM等耗費(fèi)資源較多的命令調(diào)用時(shí)使用把該值調(diào)大,能加快命令的執(zhí)行
wal_buffer768kB日志緩存區(qū)的大小可以降低IO,如果遇上比較多的并發(fā)短事務(wù),應(yīng)該和commit_delay一起用
checkpoint_segments3設(shè)置wal log的最大數(shù)量數(shù)(一個(gè)log的大小為16M)默認(rèn)的48M的緩存是一個(gè)嚴(yán)重的瓶頸,基本上都要設(shè)置為10以上
checkpoint_completion_target0.5表示checkpoint的完成時(shí)間要在兩個(gè)checkpoint間隔時(shí)間的N%內(nèi)完成能降低平均寫入的開銷
commit_delay
事務(wù)提交后,日志寫到wal log上到wal_buffer寫入到磁盤的時(shí)間間隔。需要配合commit_sibling能夠一次寫入多個(gè)事務(wù),減少IO,提高性能
commit_siblings5設(shè)置觸發(fā)commit_delay的并發(fā)事務(wù)數(shù),根據(jù)并發(fā)事務(wù)多少來配置

減少IO,提高性能

 
superuser_reserved_connections3預(yù)留給超級用戶的數(shù)據(jù)庫連接數(shù)目,該值必須小于max_connections。減少IO,提高性能

  

一、連接配置與安全認(rèn)證

1、連接Connection Settings

listen_addresses (string)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它指定數(shù)據(jù)庫用來監(jiān)聽客戶端連接的TCP/IP地址。默認(rèn)是值是* ,表示數(shù)據(jù)庫在啟動(dòng)以后將在運(yùn)行數(shù)據(jù)的機(jī)器上的所有的IP地址上監(jiān)聽用戶請求(如果機(jī)器只有一個(gè)網(wǎng)卡,只有一個(gè)IP地址,有多個(gè)網(wǎng)卡的機(jī)器有多個(gè) IP地址)。可以寫成機(jī)器的名字,也可以寫成IP地址,不同的值用逗號分開,例如,’server01’, ’140.87.171.49, 140.87.171.21’。如果被設(shè)成localhost,表示數(shù)據(jù)庫只能接受本地的客戶端連接請求,不能接受遠(yuǎn)程的客戶端連接請求。


port (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它指定數(shù)據(jù)庫監(jiān)聽?wèi)舳诉B接的TCP端口。默認(rèn)值是5432。

max_connections (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它決定數(shù)據(jù)庫可以同時(shí)建立的最大的客戶端連接的數(shù)目。默認(rèn)值是100。每個(gè)連接占用 400字節(jié)共享內(nèi)存。Note:  Increasing max_connections costs ~400 bytes of shared memory per  connection slot, plus lock space (see max_locks_per_transaction).

superuser_reserved_connections (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它表示預(yù)留給超級用戶的數(shù)據(jù)庫連接數(shù)目。它的值必須小于max_connections。 普通用戶可以在數(shù)據(jù)庫中建立的最大的并發(fā)連接的數(shù)目是max_connections 默認(rèn)值是3。

unix_socket_group (string)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。設(shè)置Unix-domain socket所在的操作系統(tǒng)用戶組。默認(rèn)值是空串,用啟動(dòng)數(shù)據(jù)庫的操作系統(tǒng)用戶所在的組作為Unix-domain socket的用戶組。

unix_socket_permissions  (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它設(shè)置Unix-domain socket的訪問權(quán)限,格式與操作系統(tǒng)的文件訪問權(quán)限是一樣的。默認(rèn)值是0770,表示任何操作系統(tǒng)用戶都能訪問Unix-domain socket??梢栽O(shè)為0770(所有Unix-domain socket文件的所有者所在的組包含的用戶都能訪問)和0700(只有Unix-domain socket文件的所有者才能訪問)。對于Unix-domain socket,只有寫權(quán)限才有意義,讀和執(zhí)行權(quán)限是沒有意義的。

#unix_socket_directories = '/tmp'       # comma-separated list of directories

                                        # (change requires restart)

#bonjour = off                          # advertise server via Bonjour

                                        # (change requires restart)

#bonjour_name = ''                      # defaults to the computer name

                                        # (change requires restart)

2、安全認(rèn)證Security and Authentication

authentication_timeout (integer)

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置,它指定一個(gè)時(shí)間長度,在這個(gè)時(shí)間長度內(nèi),必須完成客戶端認(rèn)證操作,否則客戶端連接請求將被拒絕。它可以阻止某些客戶端進(jìn)行認(rèn)證時(shí)長時(shí)間占用數(shù)據(jù)庫連接。單位是秒,默認(rèn)值是60。

ssl (boolean)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。決定數(shù)據(jù)庫是否接受SSL連接。默認(rèn)值是off。

ssl_ciphers (string)

指定可以使用的SSL加密算法。查看操作系統(tǒng)關(guān)于openssl的用戶手冊可以得到完整的加密算法列表(執(zhí)行命令openssl ciphers –v也可以得到)。

#ssl_prefer_server_ciphers = on         # (change requires restart)

#ssl_ecdh_curve = 'prime256v1'          # (change requires restart)

#ssl_renegotiation_limit = 0            # amount of data between renegotiations

#ssl_cert_file = 'server.crt'           # (change requires restart)

#ssl_key_file = 'server.key'            # (change requires restart)

#ssl_ca_file = ''                       # (change requires restart)

#ssl_crl_file = ''                      # (change requires restart)

#password_encryption = on

#db_user_namespace = off

# GSSAPI using Kerberos

#krb_server_keyfile = ''

#krb_caseins_users = off

# - TCP Keepalives -

tcp_keepalives_idle (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是0,意思是使用操作系統(tǒng)的默認(rèn)值。它設(shè)置TCP套接字的TCP_KEEPIDLE屬性。這個(gè)參數(shù)對于通過Unix-domain socket建立的數(shù)據(jù)庫連接沒有任何影響。即 間歇性發(fā)送TCP心跳包,房子連接被網(wǎng)絡(luò)設(shè)備中斷。

tcp_keepalives_interval (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是0,意思是使用操作系統(tǒng)的默認(rèn)值。它設(shè)置TCP套接字的TCP_KEEPINTVL屬性。這個(gè)參數(shù)對于通過Unix-domain socket建立的數(shù)據(jù)庫連接沒有任何影響。

tcp_keepalives_count (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是0,意思是使用操作系統(tǒng)的默認(rèn)值。它設(shè)置TCP套接字的TCP_KEEPCNT屬性。這個(gè)參數(shù)對于通過Unix-domain socket建立的數(shù)據(jù)庫連接沒有任何影響。

二、文件配置FILE LOCATIONS

# The default values of these variables are driven from the -D command-line

# option or PGDATA environment variable, represented here as ConfigDir.

#data_directory = 'ConfigDir'           # use data in another directory

                                        # (change requires restart)

#hba_file = 'ConfigDir/pg_hba.conf'     # host-based authentication file

                                        # (change requires restart)

#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file

                                        # (change requires restart)

# If external_pid_file is not explicitly set, no extra PID file is written.

#external_pid_file = ''                 # write an extra PID file

                                        # (change requires restart)

三、內(nèi)存 Memory

shared_buffers (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它表示數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)塊的個(gè)數(shù),每個(gè)數(shù)據(jù)塊的大小是8KB。數(shù)據(jù)緩沖區(qū)位于數(shù)據(jù)庫的共享內(nèi)存中,它越大越好,不能小于128KB。默認(rèn)值是128MB。


temp_buffers (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是8MB。它決定存放臨時(shí)表的數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)塊的個(gè)數(shù),每個(gè)數(shù)據(jù)塊的大小是8KB。臨時(shí)表緩沖區(qū)存放在每個(gè)數(shù)據(jù)庫進(jìn)程的私有內(nèi)存中,而不是存放在數(shù)據(jù)庫的共享內(nèi)存中。最小值800KB

max_prepared_transactions (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它決定能夠同時(shí)處于prepared狀態(tài)的事務(wù)的最大數(shù)目(參考PREPARE TRANSACTION命令)。如果它的值被設(shè)為0。則將數(shù)據(jù)庫將關(guān)閉prepared事務(wù)的特性。它的值通常應(yīng)該和max_connections的值一樣大。每個(gè)事務(wù)消耗600字節(jié)(b)共享內(nèi)存。

work_mem (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。它決定數(shù)據(jù)庫的排序操作和哈希表使用的內(nèi)存緩沖區(qū)的大小。如果work_mem指定的內(nèi)存被耗盡,數(shù)據(jù)庫將使用磁盤文件進(jìn)行完成操作,速度會(huì)慢很多。ORDER BY、DISTINCT和merge連接會(huì)使用排序操作。哈希表在Hash連接、hash聚集函數(shù)和用哈希表來處理IN謂詞中的子查詢中被使用。單位是KB,默認(rèn)值是4MB。


maintenance_work_mem (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。它決定數(shù)據(jù)庫的維護(hù)操作使用的內(nèi)存空間的大小。數(shù)據(jù)庫的維護(hù)操作包括VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等操作。 maintenance_work_mem的值如果比較大,通??梢钥s短VACUUM數(shù)據(jù)庫和從dump文件中恢復(fù)數(shù)據(jù)庫需要的時(shí)間。maintenance_work_mem存放在每個(gè)數(shù)據(jù)庫進(jìn)程的私有內(nèi)存中,而不是存放在數(shù)據(jù)庫的共享內(nèi)存中。單位是KB,默認(rèn)值是64MB。


max_stack_depth (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置,但只有數(shù)據(jù)庫超級用戶才能修改它。它決定一個(gè)數(shù)據(jù)庫進(jìn)程在運(yùn)行時(shí)的STACK所占的空間的最大值。數(shù)據(jù)庫進(jìn)程在運(yùn)行時(shí),會(huì)自動(dòng)檢查自己的STACK大小是否超過max_stack_depth,如果超過,會(huì)自動(dòng)終止當(dāng)前事務(wù)。這個(gè)值應(yīng)該比操作系統(tǒng)設(shè)置的進(jìn)程STACK的大小的上限小1MB。使用操作系統(tǒng)命令“ulimit –s“可以得到操作系統(tǒng)設(shè)置的進(jìn)程STACK的最大值。單位是KB,默認(rèn)值是2MB。

#huge_pages = try                       # on, off, or try  (change requires restart)

#盡量使用大頁,需要操作系統(tǒng)的支持,配置vm.nr_hugepages*2MB大于 shared_buffers.

dynamic_shared_memory_type = posix     

                                         # the default is the first option

                                        # supported by the operating system:

                                        #   posix

                                        #   sysv

                                        #   windows

                                        #   mmap

                                        # use none to disable dynamic shared memory

#autovacuum_work_mem = -1              

# min 1MB, or -1 to use           maintenance_work_mem

四、資源(空閑空間映射)

Free Space Map
數(shù)據(jù)庫的所有可用空間信息都存放在一個(gè)叫free space map (FSM)的結(jié)構(gòu)中,它記載數(shù)據(jù)文件中每個(gè)數(shù)據(jù)塊的可用空間的大小。FSM中沒有記錄的數(shù)據(jù)塊,即使有可用空間,也不會(huì)系統(tǒng)使用。系統(tǒng)如果需要新的物理存儲(chǔ)空間,會(huì)首先在FSM中查找,如果FSM中沒有一個(gè)數(shù)據(jù)頁有足夠的可用空間,系統(tǒng)就會(huì)自動(dòng)擴(kuò)展數(shù)據(jù)文件。所以,F(xiàn)SM如果太小,會(huì)導(dǎo)致系統(tǒng)頻繁地?cái)U(kuò)展數(shù)據(jù)文件,浪費(fèi)物理存儲(chǔ)空間。命令VACUUM VERBOSE在執(zhí)行結(jié)束以后,會(huì)提示當(dāng)前的FSM設(shè)置是否滿足需要,如果FSM的參數(shù)值太小,它會(huì)提示增大參數(shù)。

FSM存放在數(shù)據(jù)庫的共享內(nèi)存中,由于物理內(nèi)存的限制,F(xiàn)SM不可能跟蹤數(shù)據(jù)庫的所有的數(shù)據(jù)文件的所有數(shù)據(jù)塊的可用空間信息,只能跟蹤一部分?jǐn)?shù)據(jù)塊的可用空間信息。


max_fsm_relations (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。默認(rèn)值是1000。它決定FSM跟蹤的表和索引的個(gè)數(shù)的上限。每個(gè)表和索引在FSM中占7個(gè)字節(jié)的存儲(chǔ)空間。


max_fsm_pages (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它決定FSM中跟蹤的數(shù)據(jù)塊的個(gè)數(shù)的上限。initdb在創(chuàng)建數(shù)據(jù)庫集群時(shí)會(huì)根據(jù)物理內(nèi)存的大小決定它的值。每個(gè)數(shù)據(jù)塊在fsm中占6個(gè)字節(jié)的存儲(chǔ)空間。它的大小不能小于16 * max_fsm_relations。默認(rèn)值是20000。

五、內(nèi)核資源Kernel Resource Usage

max_files_per_process (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。他設(shè)定每個(gè)數(shù)據(jù)庫進(jìn)程能夠打開的文件的數(shù)目。默認(rèn)值是1000。


shared_preload_libraries (string)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。它設(shè)置數(shù)據(jù)庫在啟動(dòng)時(shí)要加載的操作系統(tǒng)共享庫文件。如果有多個(gè)庫文件,名字用逗號分開。如果數(shù)據(jù)庫在啟動(dòng)時(shí)未找到shared_preload_libraries指定的某個(gè)庫文件,數(shù)據(jù)庫將無法啟動(dòng)。默認(rèn)值為空串。

六、垃圾資源回收Cost-Based Vacuum Delay

執(zhí)行VACUUM 和ANALYZE命令時(shí),因?yàn)樗鼈儠?huì)消耗大量的CPU與IO資源,而且執(zhí)行一次要花很長時(shí)間,這樣會(huì)干擾系統(tǒng)執(zhí)行應(yīng)用程序發(fā)出的SQL命令。為了解決這個(gè)問題,VACUUM 和ANALYZE命令執(zhí)行一段時(shí)間后,系統(tǒng)會(huì)暫時(shí)終止它們的運(yùn)行,過一段時(shí)間后再繼續(xù)執(zhí)行這兩個(gè)命令。這個(gè)特性在默認(rèn)的情況下是關(guān)閉的。將參數(shù)vacuum_cost_delay設(shè)為一個(gè)非零的正整數(shù)就可以打開這個(gè)特性。

用戶通常只需要設(shè)置參數(shù)vacuum_cost_delay和vacuum_cost_limit,其它的參數(shù)使用默認(rèn)值即可。VACUUM 和ANALYZE命令在執(zhí)行過程中,系統(tǒng)會(huì)計(jì)算它們執(zhí)行消耗的資源,資源的數(shù)量用一個(gè)正整數(shù)表示,如果資源的數(shù)量超過vacuum_cost_limit,則執(zhí)行命令的進(jìn)程會(huì)進(jìn)入睡眠狀態(tài),睡眠的時(shí)間長度是是vacuum_cost_delay。vacuum_cost_limit的值越大,VACUUM 和ANALYZE命令在執(zhí)行的過程中,睡眠的次數(shù)就越少,反之,vacuum_cost_limit的值越小,VACUUM 和ANALYZE命令在執(zhí)行的過程中,睡眠的次數(shù)就越多。

vacuum_cost_delay (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是0。它決定執(zhí)行VACUUM 和ANALYZE命令的進(jìn)程的睡眠時(shí)間。單位是毫秒。它的值最好是10的整數(shù),如果不是10的整數(shù),系統(tǒng)會(huì)自動(dòng)將它設(shè)為比該值大的并且最接近該值的是10的倍數(shù)的整數(shù)。如果值是0,VACUUM 和ANALYZE命令在執(zhí)行過程中不會(huì)主動(dòng)進(jìn)入睡眠狀態(tài),會(huì)一直執(zhí)行下去直到結(jié)束。

vacuum_cost_page_hit (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是1。鎖住緩沖池,查找共享的散列表以及掃描頁面的內(nèi)容的開銷(credits)。

vacuum_cost_page_miss (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是10。表示鎖住緩沖池,查找共享散列表,從磁盤讀取需要的數(shù)據(jù)塊以及掃描它的內(nèi)容的開銷。


vacuum_cost_page_dirty (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是20。如果清理修改一個(gè)原先是干凈的塊的預(yù)計(jì)開銷。它需要一個(gè)把臟的磁盤塊再次沖刷到磁盤上的額外開銷。


vacuum_cost_limit (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。默認(rèn)值是200。導(dǎo)致清理進(jìn)程休眠的積累開銷。

七、后臺(tái)寫數(shù)據(jù)庫進(jìn)程Background Writer

后臺(tái)寫數(shù)據(jù)庫進(jìn)程負(fù)責(zé)將數(shù)據(jù)緩沖區(qū)中的被修改的數(shù)據(jù)塊(又叫臟數(shù)據(jù)塊)寫回到數(shù)據(jù)庫物理文件中。

bgwriter_delay (integer)

這個(gè)參數(shù)只能在文件postgresql.conf中設(shè)置。它決定后臺(tái)寫數(shù)據(jù)庫進(jìn)程的睡眠時(shí)間。后臺(tái)寫數(shù)據(jù)庫進(jìn)程每次完成寫數(shù)據(jù)到物理文件中的任務(wù)以后,就會(huì)睡眠bgwriter_delay指定的時(shí)間。 bgwriter_delay的值應(yīng)該是10的倍數(shù),如果用戶設(shè)定的值不是10的倍數(shù),數(shù)據(jù)庫會(huì)自動(dòng)將參數(shù)的值設(shè)為比用戶指定的值大的最接近用戶指定的值的同時(shí)是10的倍數(shù)的值。單位是毫秒,默認(rèn)值是200。即 后端寫進(jìn)程每隔多少毫秒重復(fù)一次動(dòng)作。


bgwriter_lru_maxpages (integer)

這個(gè)參數(shù)只能在文件postgresql.conf中設(shè)置。默認(rèn)值是100。后臺(tái)寫數(shù)據(jù)庫進(jìn)程每次寫臟數(shù)據(jù)塊時(shí),寫到外部文件中的臟數(shù)據(jù)塊的個(gè)數(shù)不能超過bgwriter_lru_maxpages指定的值。例如,如果它的值是500,則后臺(tái)寫數(shù)據(jù)庫進(jìn)程每次寫到物理文件的數(shù)據(jù)頁的個(gè)數(shù)不能超過500,若超過,進(jìn)程將進(jìn)入睡眠狀態(tài),等下次醒來再執(zhí)行寫物理文件的任務(wù)。如果它的值被設(shè)為0, 后臺(tái)寫數(shù)據(jù)庫進(jìn)程將不會(huì)寫任何物理文件(但還會(huì)執(zhí)行檢查點(diǎn)操作)。

即 一個(gè)周期最多寫多少臟頁。


bgwriter_lru_multiplier (floating point)

這個(gè)參數(shù)只能在文件postgresql.conf中設(shè)置。默認(rèn)值是2.0。它決定后臺(tái)寫數(shù)據(jù)庫進(jìn)程每次寫物理文件時(shí),寫到外部文件中的臟數(shù)據(jù)塊的個(gè)數(shù)(不能超過bgwriter_lru_maxpages指定的值)。一般使用默認(rèn)值即可,不需要修改這個(gè)參數(shù)。這個(gè)參數(shù)的值越大,后臺(tái)寫數(shù)據(jù)庫進(jìn)程每次寫的臟數(shù)據(jù)塊的個(gè)數(shù)就越多

----Asynchronous Behavior----

#effective_io_concurrency = 1           # 1-1000; 0 disables prefetching

#max_worker_processes = 8 

如果要使用 worker process,最多可以允許 fork多少個(gè) worker進(jìn)程

八、事務(wù)日志預(yù)寫

full_page_writes (boolean)

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。默認(rèn)值是on。打開這個(gè)參數(shù),可以提高數(shù)據(jù)庫的可靠性,減少數(shù)據(jù)丟失的概率,但是會(huì)產(chǎn)生過多的事務(wù)日志,降低數(shù)據(jù)庫的性能。 即 服務(wù)器在checkpoint之后在對頁面的第一次寫時(shí)將整個(gè)頁面寫到wal里面。

wal_buffers (integer)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。默認(rèn)值是8。它指定事務(wù)日志緩沖區(qū)中包含的數(shù)據(jù)塊的個(gè)數(shù),每個(gè)數(shù)據(jù)塊的大小是8KB,所以默認(rèn)的事務(wù)日志緩沖區(qū)的大小是8*8=64KB。事務(wù)日志緩沖區(qū)位于數(shù)據(jù)庫的共享內(nèi)存中。即 放在共享內(nèi)存里用于wal 數(shù)據(jù)的磁盤頁面緩沖區(qū)的數(shù)目,最小32kb,-1表示基于share buffer的設(shè)置。

wal_writer_delay (integer)

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。它決定寫事務(wù)日志進(jìn)程的睡眠時(shí)間。WAL進(jìn)程每次在完成寫事務(wù)日志的任務(wù)后,就會(huì)睡眠wal_writer_delay指定的時(shí)間,然后醒來,繼續(xù)將新產(chǎn)生的事務(wù)日志從緩沖區(qū)寫到WAL文件中。單位是毫秒(millisecond),默認(rèn)值是200。 即 每隔多長時(shí)間進(jìn)行一次寫操作。


commit_delay (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。它設(shè)定事務(wù)在發(fā)出提交命令以后的睡眠時(shí)間,只有在睡眠了commit_delay指定的時(shí)間以后,事務(wù)產(chǎn)生的事務(wù)日志才會(huì)被寫到事務(wù)日志文件中,事務(wù)才能真正地提交。增大這個(gè)參數(shù)會(huì)增加用戶的等待時(shí)間,但是可以讓多個(gè)事務(wù)被同時(shí)提交,提高系統(tǒng)的性能。如果數(shù)據(jù)庫中的負(fù)載比較高,而且大部分事務(wù)都是更新類型的事務(wù),可以考慮增大這個(gè)參數(shù)的值。下面的參數(shù)commit_siblings會(huì)影響commit_delay是否生效。默認(rèn)值是0,單位是微秒(microsecond)。0表示無延遲。即 向WAL緩沖區(qū)寫入記錄和將緩沖區(qū)刷新到磁盤上之間的時(shí)間延遲。


commit_siblings (integer)

這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。這個(gè)參數(shù)的值決定參數(shù)commit_delay是否生效。假設(shè)commit_siblings的值是5,如果一個(gè)事務(wù)發(fā)出一個(gè)提交請求,此時(shí),如果數(shù)據(jù)庫中正在執(zhí)行的事務(wù)的個(gè)數(shù)大于或等于5,那么該事務(wù)將睡眠commit_delay指定的時(shí)間。如果數(shù)據(jù)庫中正在執(zhí)行的事務(wù)的個(gè)數(shù)小于5,這個(gè)事務(wù)將直接提交。默認(rèn)值是5。即 在commit_delay時(shí)間內(nèi),最少打開的并發(fā)事務(wù)數(shù)(1-1000);

#wal_level = minimal        預(yù)寫日志模式           

                                        # minimal, archive, hot_standby, or logical

                                        # (change requires restart)

#fsync = on                          設(shè)置同步方式  

                                         # turns forced synchronization on or off

#synchronous_commit = on          如果磁盤的IOPS一般,建議使用異步提交來提高性能,但是數(shù)據(jù)庫crash或操作系統(tǒng)crash時(shí),最多可能丟失2*wal_writer_delay時(shí)間段產(chǎn)生的事務(wù)日志(在wal buffer中)     

                                         # synchronization level;

                                        # off, local, remote_write, or on

#wal_sync_method = fsync        用來向磁盤強(qiáng)制更新wal數(shù)據(jù)的方法。如果fsync 是關(guān)閉的,那這個(gè)設(shè)置就是無關(guān)無效的。       

                                        # the default is the first option

                                        # supported by the operating system:

                                        #   open_datasync(用O_DSYNC選項(xiàng)的open()打開WAL文件)

                                        #   fdatasync (default on Linux) 每次提交的時(shí)候都調(diào)用fdatasync()

                                        #   fsync 每次提交的時(shí)候都調(diào)用fsync

                                        #   fsync_writethrough每次提交的時(shí)候都調(diào)用fsync(),強(qiáng)制寫出任何磁盤寫緩沖區(qū)

                                        #   open_sync 用O_DSYNC選項(xiàng)的open()打開WAL文件

#wal_log_hints = off                   

                                        # also do full page writes of non-critical updates  (change requires restart)

九、

十、檢查點(diǎn)Checkpoints

checkpoint_segments (integer) in logfile segments, min 1, 16MB each

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。默認(rèn)值是3。它影響系統(tǒng)何時(shí)啟動(dòng)一個(gè)檢查點(diǎn)操作。如果上次檢查點(diǎn)操作結(jié)束以后,系統(tǒng)產(chǎn)生的事務(wù)日志文件的個(gè)數(shù)超過checkpoint_segments的值,系統(tǒng)就會(huì)自動(dòng)啟動(dòng)一個(gè)檢查點(diǎn)操作。增大這個(gè)參數(shù)會(huì)增加數(shù)據(jù)庫崩潰以后恢復(fù)操作需要的時(shí)間。即 最大多少大小的段發(fā)生一次checkpoint,等于shared_buffers除以單個(gè)wal segment的大小。

checkpoint_timeout (integer) range 30s-1h

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。單位是秒,默認(rèn)值是300。它影響系統(tǒng)何時(shí)啟動(dòng)一個(gè)檢查點(diǎn)操作。如果現(xiàn)在的時(shí)間減去上次檢查點(diǎn)操作結(jié)束的時(shí)間超過了checkpoint_timeout的值,系統(tǒng)就會(huì)自動(dòng)啟動(dòng)一個(gè)檢查點(diǎn)操作。增大這個(gè)參數(shù)會(huì)增加數(shù)據(jù)庫崩潰以后恢復(fù)操作需要的時(shí)間。即 最大多長時(shí)間發(fā)生一次checkpoint


checkpoint_completion_target (floating point)

這個(gè)參數(shù)控制檢查點(diǎn)操作的執(zhí)行時(shí)間。合法的取值在0到1之間,默認(rèn)值是0.5。不要輕易地改變這個(gè)參數(shù)的值,使用默認(rèn)值即可。 這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。

#checkpoint_warning = 30s

十一、磁盤 Disk

#temp_file_limit = -1                   # limits per-session temp file space

                                                       # in kB, or -1 for no limit

每個(gè)會(huì)話的臨時(shí)文件空間(kb),-1 表示無限制

十二、歸檔模式Archiving

archive_mode (boolean)

這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。默認(rèn)值是off。它決定數(shù)據(jù)庫是否打開歸檔模式。


archive_dir (string)
這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫時(shí),才能被設(shè)置。默認(rèn)值是空串。它設(shè)定存放歸檔事務(wù)日志文件的目錄。

archive_timeout (integer)

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。默認(rèn)值是0。單位是秒。如果archive_timeout的值不是0,而且當(dāng)前時(shí)間減去數(shù)據(jù)庫上次進(jìn)行事務(wù)日志文件切換的時(shí)間大于archive_timeout的值,數(shù)據(jù)庫將進(jìn)行一次事務(wù)日志文件切換。一般情況下,數(shù)據(jù)庫只有在一個(gè)事務(wù)日志文件寫滿以后,才會(huì)切換到下一個(gè)事務(wù)日志文件,設(shè)定這個(gè)參數(shù)可以讓數(shù)據(jù)庫在一個(gè)事務(wù)日志文件尚未寫滿的情況下切換到下一個(gè)事務(wù)日志文件。

十三、優(yōu)化器參數(shù)QUERY TUNING

1、存取方法參數(shù) Planner Method Configuration

下列參數(shù)控制查詢優(yōu)化器是否使用特定的存取方法。除非對優(yōu)化器特別了解,一般情況下,使用它們默認(rèn)值即可。

enable_bitmapscan (boolean)

打開或者關(guān)閉規(guī)劃器對位圖掃描規(guī)劃類型的使用 。默認(rèn)值是 on。

enable_hashagg (boolean)

打開或者關(guān)閉查詢規(guī)劃器對散列聚集規(guī)劃類型的使用。默認(rèn)值是 on。

enable_hashjoin (boolean)

打開或者關(guān)閉查詢規(guī)劃器對散列連接規(guī)劃類型的使用。默認(rèn)值是 on。

enable_indexscan (boolean)

打開或者關(guān)閉查詢規(guī)劃器對索引掃描規(guī)劃類型的使用。默認(rèn)值是 on。

enable_mergejoin (boolean)

打開或者關(guān)閉查詢規(guī)劃器對合并連接規(guī)劃類型的使用。默認(rèn)值是 on。

enable_nestloop (boolean)

打開或者關(guān)閉查詢規(guī)劃器對嵌套循環(huán)連接規(guī)劃類型的使用。默認(rèn)值是 on。

enable_seqscan (boolean)

打開或者關(guān)閉查詢規(guī)劃器對順序掃描規(guī)劃類型的使用。默認(rèn)值是 on。

enable_sort (boolean)

打開或者關(guān)閉查詢規(guī)劃器使用明確的排序步驟。默認(rèn)值是 on。

enable_tidscan (boolean)

打開或者關(guān)閉查詢規(guī)劃器對TID掃描規(guī)劃類型的使用。默認(rèn)值是 on。

2、 優(yōu)化器成本常量 Planner Cost Constants

優(yōu)化器用一個(gè)正的浮點(diǎn)數(shù)來表示不同的查詢計(jì)劃的執(zhí)行成本,每個(gè)基本的數(shù)據(jù)庫操作都會(huì)被賦給一個(gè)確定的成本常量,優(yōu)化器根據(jù)每個(gè)基本操作的執(zhí)行成本來計(jì)算每個(gè)查詢計(jì)劃的執(zhí)行成本。不要輕易地改變下面的參數(shù)的值,使用它們的默認(rèn)值即可。


seq_page_cost (floating point)

設(shè)置從數(shù)據(jù)文件上順序讀取一個(gè)數(shù)據(jù)塊的執(zhí)行成本。默認(rèn)值是1.0。


random_page_cost (floating point)

設(shè)置從數(shù)據(jù)文件上隨機(jī)讀取一個(gè)數(shù)據(jù)塊的執(zhí)行成本。默認(rèn)值是4.0。

cpu_tuple_cost (floating point)

設(shè)置處理每一個(gè)數(shù)據(jù)行的執(zhí)行成本。默認(rèn)值是0.01。


cpu_index_tuple_cost (floating point)

設(shè)置在掃描索引的過程中處理每一個(gè)索引項(xiàng)的執(zhí)行成本。默認(rèn)值是0.005。


cpu_operator_cost (floating point)

設(shè)置處理每一個(gè)運(yùn)算符或函數(shù)的執(zhí)行成本。默認(rèn)值是0.0025。


effective_cache_size (integer)

設(shè)置單個(gè)查詢可以使用的數(shù)據(jù)緩沖區(qū)的大小。默認(rèn)值是128MB。

3、查詢優(yōu)化 Genetic Query Optimizer

下列參數(shù)控制優(yōu)化器使用的遺傳算法。除非對遺傳算法特別了解,一般情況下,使用它們默認(rèn)值即可。

geqo (boolean)

打開或者關(guān)閉遺傳優(yōu)化器。默認(rèn)值是on。


geqo_threshold (integer)

確定使用遺傳優(yōu)化器的查詢類型。默認(rèn)值是12。如果FROM子句中引用的的表的數(shù)目超過geqo_threshold的值,就會(huì)使用遺傳優(yōu)化器。對于簡單的查詢使用窮舉優(yōu)化器。


geqo_effort (integer)

控制遺傳優(yōu)化器在生成查詢計(jì)劃需要的時(shí)間和查詢計(jì)劃的有效性之間做一個(gè)折中。有效的取值范圍是1到 10。默認(rèn)值是5。值越大,優(yōu)化器花在選擇查詢計(jì)劃的上的時(shí)間越長,同時(shí)找到一個(gè)最優(yōu)的查詢計(jì)劃的可能性就越大。系統(tǒng)通常不直接使用geqo_effort的值,而是使用它的值來計(jì)算參數(shù)geqo_pool_size和geqo_generations的默認(rèn)。


geqo_pool_size (integer)

控制遺傳優(yōu)化器的池(pool)大小。默認(rèn)值是0。池大小是遺傳群體中的個(gè)體數(shù)目。至少是2,典型的取值在10和1000之間。如果參數(shù)的值是0,系統(tǒng)會(huì)自動(dòng)根據(jù)geqo_effort的值和查詢中引用的表的個(gè)數(shù)選擇一個(gè)默認(rèn)值。


geqo_generations (integer)

控制遺傳優(yōu)化器的代(generation)的大小。默認(rèn)值是0。代是遺傳算法的迭代次數(shù)。至少是1,典型的取值范圍與池的取值范圍相同。如果參數(shù)的值是0,系統(tǒng)會(huì)自動(dòng)根據(jù)geqo_pool_size的值和選擇一個(gè)默認(rèn)值。


geqo_selection_bias (floating point)

控制遺傳優(yōu)化器的代選擇偏差(selection bias)的大小。默認(rèn)值是2。取值范圍在1.50到2.00之間。

4、其它優(yōu)化器參數(shù) Other Planner Options

default_statistics_target (integer)

設(shè)置默認(rèn)的收集優(yōu)化器統(tǒng)計(jì)數(shù)據(jù)的目標(biāo)值。它的值越大,ANALYZE操作的執(zhí)行的時(shí)間越長,掃描的數(shù)據(jù)行的個(gè)數(shù)也就越多,得到的優(yōu)化器統(tǒng)計(jì)數(shù)據(jù)就越準(zhǔn)確。也可以使用命令A(yù)LTER TABLE ... ALTER COLUMN ... SET STATISTICS來為表的每個(gè)列設(shè)置一個(gè)單獨(dú)的統(tǒng)計(jì)數(shù)據(jù)目標(biāo)值,這個(gè)值的作用與參數(shù)default_statistics_target是一樣,它只影響相關(guān)的列的統(tǒng)計(jì)數(shù)據(jù)收集過程。默認(rèn)值是10。


constraint_exclusion (boolean)

如果該參數(shù)的值是on,查詢優(yōu)化器將使用表上的約束條件來優(yōu)化查詢。如果它的值是off,查詢優(yōu)化器不會(huì)使用表上的約束條件來優(yōu)化查詢。默認(rèn)值是off。

#cursor_tuple_fraction = 0.1            # range 0.0-1.0

#from_collapse_limit = 8

#join_collapse_limit = 8                   # 1 disables collapsing of explicit

                                                            # JOIN clauses

十四、數(shù)據(jù)庫運(yùn)行日志配置參數(shù)

1、Where to Log

log_destination = 'stderr'              # Valid values are combinations of

                                        # stderr, csvlog, syslog, and eventlog,

                                        # depending on platform.  csvlog

                                        # requires logging_collector to be on.

# This is used when logging to stderr:

logging_collector = on                  # Enable capturing of stderr and csvlog

                                        # into log files. Required to be on for

                                        # csvlogs.

                                        # (change requires restart)

# These are only used if logging_collector is on:

log_directory (string)

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。它決定存放數(shù)據(jù)庫運(yùn)行日志文件的目錄。默認(rèn)值是pg_log。可以是絕對路徑,也可是相對路徑(相對于數(shù)據(jù)庫文件所在的路徑)。


log_filename (string)

它決定數(shù)據(jù)庫運(yùn)行日志文件的名稱。默認(rèn)值是postgresql-%Y-%m-%d_%H%M%S.log。它的值可以包含%Y、%m、%d、%H、%M和%S這樣的字符串,分別表示年、月、日、小時(shí)、分和秒。 如果參數(shù)的值中沒有指定時(shí)間信息(沒有出現(xiàn)%Y、%m、%d、%H、%M和%S中的任何一個(gè)),系統(tǒng)會(huì)自動(dòng)在log_filename值的末尾加上文件創(chuàng)建的時(shí)間作為文件名,例如,如果log_filename的值是 server_log,那么在Sun Aug 29 19:02:33 2004 MST被創(chuàng)建的日志文件的名稱將是server_log.1093827753,1093827753是Sun Aug 29 19:02:33 2004 MST在數(shù)據(jù)庫內(nèi)部的表示形式。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。


log_rotation_age (integer)

它決定何時(shí)創(chuàng)建一個(gè)新的數(shù)據(jù)庫日志文件。單位是分鐘。默認(rèn)值是0。如果現(xiàn)在的時(shí)間減去上次創(chuàng)建一個(gè)數(shù)據(jù)庫運(yùn)行日志的時(shí)間超過了log_rotation_age的值,數(shù)據(jù)庫將自動(dòng)創(chuàng)建一個(gè)新的運(yùn)行日志文件。如果它的值是0,該參數(shù)將不起任何作用。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。


log_rotation_size (integer)

這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。它決定何時(shí)創(chuàng)建一個(gè)新的數(shù)據(jù)庫日志文件。單位是KB。默認(rèn)值是10240。如果一個(gè)日志文件寫入的數(shù)據(jù)量超過log_rotation_size的值,數(shù)據(jù)庫將創(chuàng)建一個(gè)新的日志文件。如果它的值被設(shè)為0,該參數(shù)將不起任何作用。


log_truncate_on_rotation (boolean)

系統(tǒng)在創(chuàng)建一個(gè)新的數(shù)據(jù)庫運(yùn)行日志文件時(shí),如果發(fā)現(xiàn)存在一個(gè)同名的文件,當(dāng)log_truncate_on_rotation的值是on時(shí),系統(tǒng)覆蓋這個(gè)同名文件。當(dāng)log_truncate_on_rotation的值是off時(shí),系統(tǒng)將重用這個(gè)同名文件,在它的末尾添加新的日志信息。另外要注意的是,只有在因?yàn)閰?shù)log_rotation_age起作用系統(tǒng)才創(chuàng)建新的日志文件的情況下,才會(huì)覆蓋同名的日志文件。因?yàn)閿?shù)據(jù)庫重新啟動(dòng)或者因?yàn)閰?shù)log_rotation_size起作用而創(chuàng)建新的日志文件,不會(huì)覆蓋同名的日志文件,而是在同名的日志文件末尾添加新的日志信息。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。默認(rèn)值是off。

例如,將這個(gè)參數(shù)設(shè)為on,將log_rotation_age設(shè)為60,將同時(shí)將log_filename設(shè)為postgresql-%H.log,系統(tǒng)中一共將只有24個(gè)日志文件,它們會(huì)被不斷地重用,任何時(shí)刻,系統(tǒng)中最多只有最近24小時(shí)的日志信息。

# These are relevant when logging to syslog:

#syslog_facility = 'LOCAL0'

#syslog_ident = 'postgres'

# This is only relevant when logging to eventlog (win32):

#event_source = 'PostgreSQL

2、When to Log

 client_min_messages (string)

控制發(fā)送給客戶端的消息級別。合法的取值是DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、LOG、NOTICE、WARNING、ERROR、FATAL和PANIC,每個(gè)級別都包含排在它后面的所有級別中的信息。級別越低,發(fā)送給客戶端的消息就越少。 默認(rèn)值是NOTICE。這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。


log_min_messages (string)

控制寫到數(shù)據(jù)庫日志文件中的消息的級別。合法的取值是DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、 LOG、FATAL和PANIC,每個(gè)級別都包含排在它后面的所有級別中的信息。級別越低,數(shù)據(jù)庫運(yùn)行日志中記錄的消息就越少。默認(rèn)值是NOTICE。只有超級用戶才能修改這個(gè)參數(shù)。只有超級用戶才能設(shè)置這個(gè)參數(shù)。


log_error_verbosity (string)

控制每條日志信息的詳細(xì)程度。合法的取值是TERSE、DEFAULT和VERBOSE(每個(gè)取值都比它前面的取值提供更詳細(xì)的信息)。只有超級用戶才能修改這個(gè)參數(shù)。默認(rèn)值是DEFAULT。


log_min_error_statement (string)

控制日志中是否記錄導(dǎo)致數(shù)據(jù)庫出現(xiàn)錯(cuò)誤的SQL語句。合法的取值是DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、INFO、NOTICE、WARNING、ERROR、 LOG、FATAL和PANIC,每個(gè)級別都包含排在它后面的所有級別。默認(rèn)值是ERROR。只有超級用戶才能修改這個(gè)參數(shù)。

消息嚴(yán)重級別

嚴(yán)重級別
用法

DEBUG1..DEBUG5
報(bào)告詳細(xì)的調(diào)試信息。

INFO
報(bào)告用戶可能需要的信息。

NOTICE
報(bào)告對用戶有用的信息。

WARNING
報(bào)告警告信息。

ERROR
報(bào)告錯(cuò)誤信息。

LOG
報(bào)告對數(shù)據(jù)庫管理員有用的信息, 例如,檢查點(diǎn)操作統(tǒng)計(jì)信息。

FATAL
報(bào)告導(dǎo)致當(dāng)前會(huì)話被終止的錯(cuò)誤信息。

PANIC

報(bào)告導(dǎo)致整個(gè)數(shù)據(jù)庫被關(guān)閉的錯(cuò)誤信息。

3、What to Log

debug_print_parse (boolean)
debug_print_rewritten (boolean)
debug_print_plan (boolean)
debug_pretty_print (boolean)

這些參數(shù)控制數(shù)據(jù)庫是否輸出運(yùn)行時(shí)的調(diào)試信息。這些參數(shù)的默認(rèn)值是off。這些參數(shù)可以被任何用戶設(shè)置。


log_checkpoints (boolean)

控制是否及記錄檢查點(diǎn)操作信息。默認(rèn)值是off。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。必須重啟數(shù)據(jù)庫才能生效。


log_connections (boolean)

控制是否及記錄客戶端連接請求信息。默認(rèn)值是off。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。必須重啟數(shù)據(jù)庫才能生效。


log_disconnections (boolean)

控制是否記錄客戶端結(jié)束連接信息。默認(rèn)值是off。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。


log_duration (boolean)

控制是否記錄每個(gè)完成的SQL語句的執(zhí)行時(shí)間。只有超級用戶才能修改這個(gè)參數(shù)。默認(rèn)值是off。對于使用擴(kuò)展協(xié)議與數(shù)據(jù)庫通信的客戶端,會(huì)記載Parse、Bind和Execute的執(zhí)行時(shí)間。


log_hostname (boolean)

控制是否及記錄客戶端的主機(jī)名。默認(rèn)值是off。如果設(shè)為on,可能會(huì)影響數(shù)據(jù)庫的性能,因?yàn)榻馕鲋鳈C(jī)名可能需要一定的時(shí)間。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。


log_line_prefix (string)

控制每條日志信息的前綴格式。默認(rèn)值是空串。它的格式類似c語言中printf函數(shù)的format字符串。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置。

log_line_prefix = '< %m >'                      # special values:

轉(zhuǎn)義序列

#   %a = application name

#   %u = user name  用戶名

#   %d = database name  數(shù)據(jù)庫名

#   %r = remote host and port  客戶端機(jī)器名或IP地址,還有客戶端端口

#   %h = remote host  客戶端機(jī)器名或IP地址

#   %p = process ID  進(jìn)程ID

#   %t = timestamp without milliseconds  帶微秒的時(shí)間

#   %m = timestamp with milliseconds  不帶微秒的時(shí)間

#   %i = command tag  命令標(biāo)簽: 會(huì)話當(dāng)前執(zhí)行的命令類型

#   %e = SQL state

#   %c = session ID 會(huì)話ID

#   %l = session line number 每個(gè)會(huì)話的日志編號,從1開始

#   %s = session start timestamp 進(jìn)程啟動(dòng)時(shí)間

#   %v = virtual transaction ID  虛擬事務(wù)ID (backendID/localXID)

#   %x = transaction ID (0 if none) 事務(wù)ID (0表示沒有分配事務(wù)ID)

#   %q = stop here in non-session 不產(chǎn)生任何輸出。如果當(dāng)前進(jìn)程是backend進(jìn)程,忽略這個(gè)轉(zhuǎn)義序列,繼續(xù)處理后面的轉(zhuǎn)義序列。如果當(dāng)前進(jìn)程不是backend進(jìn)程,忽略這個(gè)轉(zhuǎn)義序列和它后面的所有轉(zhuǎn)義序列。

#    processes

#   %%     '%' 字符%

log_lock_waits (boolean)

如果一個(gè)會(huì)話等待某個(gè)類型的鎖的時(shí)間超過deadlock_timeout的值,該參數(shù)決定是否在數(shù)據(jù)庫日志中記錄這個(gè)信息。默認(rèn)值是off。只有超級用戶才能修改這個(gè)參數(shù)。


log_statement (string)

控制記錄哪種SQL語句的執(zhí)行信息。有效的取值是none、ddl、mod和all。默認(rèn)值是none。ddl包括所有數(shù)據(jù)定義語句,如CREATE、ALTER和DROP語句。mod包括所有ddl語句和更新數(shù)據(jù)的語句,例如INSERT、UPDATE、DELETE、TRUNCATE、 COPY FROM、PREPARE和 EXECUTE。All包括所有的語句。只有超級用戶才能修改這個(gè)參數(shù)。


log_temp_files (integer)

控制是否記錄臨時(shí)文件的刪除信息。單位是KB。0表示記錄所有臨時(shí)文件的刪除信息。正整數(shù)表示只記錄大小比log_temp_files的值大的臨時(shí)文件的刪除信息。-1表示不記錄任何臨時(shí)文件刪除信息。默認(rèn)值是-1。這個(gè)參數(shù)可以在任何時(shí)候被設(shè)置。


log_timezone (string)

設(shè)置數(shù)據(jù)庫日志文件在寫日志文件時(shí)使用的時(shí)區(qū)。默認(rèn)值是unknown,意識是使用操作系統(tǒng)的時(shí)區(qū)。這個(gè)參數(shù)只能在postgresql.conf文件中被設(shè)置

十五、數(shù)據(jù)庫運(yùn)行統(tǒng)計(jì)相關(guān)參數(shù)RUNTIME STATISTICS

下面的參數(shù)控制是否搜集特定的數(shù)據(jù)庫運(yùn)行統(tǒng)計(jì)數(shù)據(jù):

---Query/Index Statistics Collector----

track_activities (boolean)

是否收集每個(gè)會(huì)話的當(dāng)前正在執(zhí)行的命令的統(tǒng)計(jì)數(shù)據(jù),包括命令開始執(zhí)行的時(shí)間。默認(rèn)值是on。只有超級用戶才能修改這個(gè)參數(shù)。


track_counts (boolean)

是否收集數(shù)據(jù)庫活動(dòng)的統(tǒng)計(jì)數(shù)據(jù)。默認(rèn)值是on。只有超級用戶才能修改這個(gè)參數(shù)。

#track_io_timing = off

#track_functions = none                 # none, pl, all

#track_activity_query_size = 1024       # (change requires restart)

#update_process_title = on

#stats_temp_directory = 'pg_stat_tmp'

---統(tǒng)計(jì)監(jiān)測Statistics Monitoring--

 log_statement_stats (boolean)
log_parser_stats (boolean)
log_planner_stats (boolean)
log_executor_stats (boolean)

這些參數(shù)決定是否在數(shù)據(jù)庫的運(yùn)行日志里記載每個(gè)SQL語句執(zhí)行的統(tǒng)計(jì)數(shù)據(jù)。如果log_statement_stats的值是on,其它的三個(gè)參數(shù)的值必須是off。所有的這些參數(shù)的默認(rèn)值都是off。log_statement_stats報(bào)告整個(gè)語句的統(tǒng)計(jì)數(shù)據(jù),log_parser_stats記載數(shù)據(jù)庫解析器的統(tǒng)計(jì)數(shù)據(jù),log_planner_stats報(bào)告數(shù)據(jù)庫查詢優(yōu)化器的統(tǒng)計(jì)數(shù)據(jù),log_executor_stats報(bào)告數(shù)據(jù)庫執(zhí)行器的統(tǒng)計(jì)數(shù)據(jù)。只有超級用戶才能修改這些參數(shù)。

十六、自動(dòng)垃圾收集相關(guān)參數(shù)AUTOVACUUM PARAMETERS

下面的參數(shù)控制自動(dòng)垃圾收集的行為:

autovacuum (boolean)

控制是夠打開數(shù)據(jù)庫的自動(dòng)垃圾收集功能。默認(rèn)值是on。如果autovacuum被設(shè)為on,參數(shù)track_counts(參考本章10.9)也要被設(shè)為on,自動(dòng)垃圾收集才能正常工作。注意,即使這個(gè)參數(shù)被設(shè)為off,如果事務(wù)ID回繞即將發(fā)生,數(shù)據(jù)庫會(huì)自動(dòng)啟動(dòng)一個(gè)垃圾收集操作。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。


log_autovacuum_min_duration (integer)

單位是毫秒。如果它的值為0,所有的垃圾搜集操作都會(huì)被記錄在數(shù)據(jù)庫運(yùn)行日志中,如果它的值是-1,所有的垃圾收集操作都不會(huì)被記錄在數(shù)據(jù)庫運(yùn)行日志中。如果把它的值設(shè)為250毫秒,只要自動(dòng)垃圾搜集發(fā)出的VACUUM和ANALYZE命令的執(zhí)行時(shí)間超過250毫秒,VACUUM和ANALYZE命令的相關(guān)信息就會(huì)被記錄在數(shù)據(jù)庫運(yùn)行日志中。默認(rèn)值是-1。這個(gè)參數(shù)只能在 postgresql.conf中被設(shè)置。


autovacuum_max_workers (integer)

設(shè)置能同時(shí)運(yùn)行的最大的自動(dòng)垃圾收集工作進(jìn)程的數(shù)目。默認(rèn)值是3。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。


autovacuum_naptime (integer)

設(shè)置自動(dòng)垃圾收集控制進(jìn)程的睡眠時(shí)間。單位是秒,默認(rèn)值是60。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。


autovacuum_vacuum_threshold (integer)

設(shè)置觸發(fā)垃圾收集操作的閾值。默認(rèn)值是50。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。只有一個(gè)表上被刪除或更新的記錄的數(shù)目超過了autovacuum_vacuum_threshold的值,才會(huì)對這個(gè)表執(zhí)行垃圾收集操作。


autovacuum_analyze_threshold (integer)

設(shè)置觸發(fā)ANALYZE操作的閾值。默認(rèn)值是50。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。只有一個(gè)表上被刪除、插入或更新的記錄的數(shù)目超過了autovacuum_analyze_threshold的值,才會(huì)對這個(gè)表執(zhí)行ANALYZE操作。


autovacuum_vacuum_scale_factor (floating point)

這個(gè)參數(shù)與何時(shí)對一個(gè)表進(jìn)行垃圾收集操作相關(guān)。默認(rèn)值是0.2。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。


autovacuum_analyze_scale_factor (floating point)

這個(gè)參數(shù)與何時(shí)對一個(gè)表進(jìn)行ANALYZE操作相關(guān)。默認(rèn)值是0.1。這個(gè)參數(shù)只能在文件postgresql.conf中被設(shè)置。

autovacuum_freeze_max_age = 200000000 

# maximum XID age before forced vacuum # (change requires restart)

指定表上事務(wù)的最大年齡,默認(rèn)2億,達(dá)到這個(gè)閥值將觸發(fā) autovacuum進(jìn)程,從而避免 wraparound. 表上的事務(wù)年齡可通過 pg_class.relfrozenxid查詢

autovacuum_multixact_freeze_max_age = 400000000       

# maximum multixact age

# before forced vacuum

# (change requires restart)

autovacuum_vacuum_cost_delay = 20ms   

# default vacuum cost delay for

# autovacuum, in milliseconds;

# -1 means use vacuum_cost_delay

當(dāng) autovacuum進(jìn)程即將執(zhí)行時(shí),對vacuum執(zhí)行cost進(jìn)行評估,如果超過 autovacuum_vacuum_cost_limit的值時(shí),則延遲,這個(gè)延遲的時(shí)間值即為改成的值.

autovacuum_vacuum_cost_limit = -1     

# default vacuum cost limit for

# autovacuum, -1 means use

# vacuum_cost_limit

這個(gè)值 為 autovacuum進(jìn)程的評估閥值,默認(rèn)值為-1,表使用 vacuum_cost_limit值,如果在執(zhí)行 autovacuum進(jìn)程期間評估的 cost 超過 autovacuum_vacuum_cost_limit,則 autovacuum進(jìn)程則會(huì)休眠

十七、鎖管理LOCK MANAGEMENT

deadlock_timeout(integer)

設(shè)置死鎖超時(shí)檢測時(shí)間。單位是微秒,默認(rèn)值是1000。死鎖檢測是一個(gè)消耗許多 CPU資源的操作。這個(gè)參數(shù)的值不能太小。在數(shù)據(jù)庫負(fù)載比較大的情況下,應(yīng)當(dāng)增大這個(gè)參數(shù)的值。


max_locks_per_transaction(integer)

這個(gè)參數(shù)控制每個(gè)事務(wù)能夠得到的平均的對象鎖的個(gè)數(shù)。默認(rèn)值是64。數(shù)據(jù)庫在啟動(dòng)以后創(chuàng)建的共享鎖表的最大可以保存max_locks_per_transaction * (max_connections + max_prepared_transactions)個(gè)對象鎖。單個(gè)事務(wù)可以同時(shí)獲得的對象鎖的數(shù)目可以超過max_locks_per_transaction的值,只要共享鎖表中還有剩余空間。每個(gè)鎖占用270個(gè)字節(jié)的共享內(nèi)存

# lock table slots.

#max_pred_locks_per_transaction = 64    # min 10

                                        # (change requires restart)

十八、客戶端連接管理CLIENT CONNECTION DEFAULTS

# - Statement Behavior -

#search_path = '"$user",public'         # schema names

#default_tablespace = ''                # a tablespace name, '' uses the default

#temp_tablespaces = ''                  # a list of tablespace names, '' uses

                                        # only default tablespace

#check_function_bodies = on

#default_transaction_isolation = 'read committed'

#default_transaction_read_only = off

#default_transaction_deferrable = off

#session_replication_role = 'origin'

#statement_timeout = 0                  # in milliseconds, 0 is disabled

#lock_timeout = 0                       # in milliseconds, 0 is disabled

#vacuum_freeze_min_age = 50000000

#vacuum_freeze_table_age = 150000000

#vacuum_multixact_freeze_min_age = 5000000

#vacuum_multixact_freeze_table_age = 150000000

#bytea_output = 'hex'                   # hex, escape

#xmlbinary = 'base64'

#xmloption = 'content'

#gin_fuzzy_search_limit = 0

# - Locale and Formatting -

datestyle = 'iso, mdy'

#intervalstyle = 'postgres'

timezone = 'PRC'

#timezone_abbreviations = 'Default'     # Select the set of available time zone

                                        # abbreviations.  Currently, there are

                                        #   Default

                                        #   Australia (historical usage)

                                        #   India

                                        # You can create your own file in

                                        # share/timezonesets/.

#extra_float_digits = 0                 # min -15, max 3

#client_encoding = sql_ascii            # actually, defaults to database

                                        # encoding

# These settings are initialized by initdb, but they can be changed.

lc_messages = 'en_US.UTF-8'                     # locale for system error message

                                        # strings

lc_monetary = 'en_US.UTF-8'                     # locale for monetary formatting

lc_numeric = 'en_US.UTF-8'                      # locale for number formatting

lc_time = 'en_US.UTF-8'                         # locale for time formatting

# default configuration for text search

default_text_search_config = 'pg_catalog.english'

# - Other Defaults -

#dynamic_library_path = '$libdir'

#local_preload_libraries = ''

#session_preload_libraries = ''

十九、錯(cuò)誤處理ERROR HANDLING

#exit_on_error = off                    # terminate session on any error?

#restart_after_crash = on               # reinitialize after backend crash?

二十、配置文件包括 CONFIG FILE INCLUDES

一個(gè)配置文件也可以包含其他配置文件,使用include 指令能夠達(dá)到這個(gè)目的。

比如 在postgresql.conf文件中 有如下一行:

include 'my.confg'

這樣的話 my.confg文件中的配置信息也會(huì)被數(shù)據(jù)庫讀入。

include 指令指定的配置文件也可以用include指令再包含其他配置文件。如果include指令中指定的文件名不是絕對路徑,數(shù)據(jù)庫會(huì)在postgresql.conf文件所在的目錄下查找這個(gè)文件。

#include_dir = 'conf.d'                 # include files ending in '.conf' from

                                        # directory 'conf.d'

#include_if_exists = 'exists.conf'      # include file only if it exists

#include = 'special.conf'               # include file

二十一、版本\平臺(tái)兼容VERSION/PLATFORM COMPATIBILITY

# - Previous PostgreSQL Versions -

#array_nulls = on

#backslash_quote = safe_encoding        # on, off, or safe_encoding

#default_with_oids = off

#escape_string_warning = on

#lo_compat_privileges = off

#quote_all_identifiers = off

#sql_inheritance = on

#standard_conforming_strings = on

#synchronize_seqscans = on

# - Other Platforms and Clients -

#transform_null_equals = off

二十二、復(fù)制REPLICATION

# - Sending Server(s) -

# Set these on the master and on any standby that will send replication data.

#max_wal_senders = 0            # max number of walsender processes

                                # (change requires restart)

#wal_keep_segments = 0          # in logfile segments, 16MB each; 0 disables

#wal_sender_timeout = 60s       # in milliseconds; 0 disables

#max_replication_slots = 0      # max number of replication slots

                                # (change requires restart)

# - Master Server -

# These settings are ignored on a standby server.

#synchronous_standby_names = '' # standby servers that provide sync rep

                                # comma-separated list of application_name

                                # from standby(s); '*' = all

#vacuum_defer_cleanup_age = 0   # number of xacts by which cleanup is delayed

# - Standby Servers -

# These settings are ignored on a master server.

#hot_standby = off                      # "on" allows queries during recovery

                                        # (change requires restart)

#max_standby_archive_delay = 30s        # max delay before canceling queries

                                        # when reading WAL from archive;

                                        # -1 allows indefinite delay

#max_standby_streaming_delay = 30s      # max delay before canceling queries

                                        # when reading streaming WAL;

                                        # -1 allows indefinite delay

#wal_receiver_status_interval = 10s     # send replies at least this often

                                        # 0 disables

#hot_standby_feedback = off             # send info from standby to prevent

                                        # query conflicts

#wal_receiver_timeout = 60s             # time that receiver waits for

                                        # communication from master

                                        # in milliseconds; 0 disables

“怎么查看Postgresql配置文件”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI