postgresql.conf配置

postgresql.conf配置 2011-05-11 23:44:57| 分類: postgresql |字號 訂閱 10.1 如何設置數據庫參數 全部的參數的名稱都是不區分大小寫的。每一個參數的取值是布爾型、整型、浮點型和字符串型這四種類型中的一個,分別用boolean、integer、floating point和string表示。布爾型的值能夠寫成ON、OFF、 TRUE、 FALSE、 YES、 NO、 1和 0,並且不區分大小寫。 有些參數用來配置內存大小和時間值。內存大小的單位能夠是KB、MB和GB。時間的單位能夠是毫秒、秒、分鐘、小時和天。用ms表示毫秒,用s表示秒,用min表示分鐘,用h表示小時,用d表示天。表示內存大小和時間值的參數參數都有一個默認的單位,若是用戶在設置參數的值時沒有指定單位,則以參數默認的單位爲準。例如,參數shared_buffers表示數據緩衝區的大小,它的默認單位是數據塊的個數,若是把它的值設成8,由於每一個數據塊的大小是8KB,則數據緩衝區的大小是8*8=64KB,若是將它的值設成128MB,則數據緩衝區的大小是128MB。參數vacuum_cost_delay的默認單位是毫秒,若是把它的值設成10,則它的值是10毫秒,若是把它的值設成100s,則它的值是100秒。 全部的參數都放在文件 postgresql.conf中,下面是一個文件實例: #這是註釋 log_connections = yes log_destination = 'syslog' search_path = '"$user", public' 每一行只能指定一個參數,空格和空白行都會被忽略。「 #」表示註釋,註釋信息不用單獨佔一行,能夠出如今配置文件的任何地方。若是參數的值不是簡單的標識符和數字,應該用單引號引發來。若是參數的值中有單引號,應該寫兩個單引號,或者在單引號前面加一個反斜槓。 一個配置文件也能夠包含其它配置文件,使用include指令可以達到這個目的,例如,假設postgresql.conf文件中有下面一行: include ‘my.confg’ 文件my.config中的配置信息也會被數據庫讀入。include指令指定的配置文件也能夠用include指令再包含其它配置文件。若是include指令中指定的文件名不是絕對路徑,數據庫會在postgresql.conf文件所在的目錄下查找這個文件。 用戶也能夠在數據庫啓動之後修改postgresql.conf配置文件,使用命令pg_ctl reload來通知數據庫從新讀取配置文件。注意,有些參數在數據庫啓動之後,不能被修改,只有從新啓動數據庫之後,新的參數值才能生效。另一些參數能夠在數據庫運行過程當中被修改並且新的值能夠當即生效。因此數據庫在運行過程當中從新讀取參數配置文件之後,不是全部的參數都會被賦給新的值。 用戶能夠在本身創建的會話中執行命令SET修改某些配置參數的值(注意不是所有參數),例如: SET ENABLE_SEQSCAN TO OFF; 另外,有些參數只有數據庫超級用戶才能使用SET命令修改它們。用戶能夠在psql中執行命令show來查看全部的數據庫參數的當前值。例如: (1)show all; --查看全部數據庫參數的值 (2)show search_path; --查看參數search_path的值 10.2 鏈接與認證 10.2.1 鏈接設置 listen_addresses (string) 這個參數只有在啓動數據庫時,才能被設置。它指定數據庫用來監聽客戶端鏈接的TCP/IP地址。默認是值是* ,表示數據庫在啓動之後將在運行數據的機器上的全部的IP地址上監聽用戶請求(若是機器只有一個網卡,只有一個IP地址,有多個網卡的機器有多個 IP地址)。能夠寫成機器的名字,也能夠寫成IP地址,不一樣的值用逗號分開,例如,’server01’, ’140.87.171.49, 140.87.171.21’。若是被設成localhost,表示數據庫只能接受本地的客戶端鏈接請求,不能接受遠程的客戶端鏈接請求。 port (integer) 這個參數只有在啓動數據庫時,才能被設置。它指定數據庫監聽戶端鏈接的TCP端口。默認值是5432。 max_connections (integer) 這個參數只有在啓動數據庫時,才能被設置。它決定數據庫能夠同時創建的最大的客戶端鏈接的數目。默認值是100。 superuser_reserved_connections (integer) 這個參數只有在啓動數據庫時,才能被設置。它表示預留給超級用戶的數據庫鏈接數目。它的值必須小於max_connections。 普通用戶能夠在數據庫中創建的最大的併發鏈接的數目是max_connections- superuser_reserved_connections, 默認值是3。 unix_socket_group (string) 這個參數只有在啓動數據庫時,才能被設置。設置Unix-domain socket所在的操做系統用戶組。默認值是空串,用啓動數據庫的操做系統用戶所在的組做爲Unix-domain socket的用戶組。 unix_socket_permissions (integer) 這個參數只有在啓動數據庫時,才能被設置。它設置Unix-domain socket的訪問權限,格式與操做系統的文件訪問權限是同樣的。默認值是0770,表示任何操做系統用戶都能訪問Unix-domain socket。能夠設爲0770(全部Unix-domain socket文件的全部者所在的組包含的用戶都能訪問)和0700(只有Unix-domain socket文件的全部者才能訪問)。對於Unix-domain socket,只有寫權限纔有意義,讀和執行權限是沒有意義的。 tcp_keepalives_idle (integer) 這個參數能夠在任什麼時候候被設置。默認值是0,意思是使用操做系統的默認值。它設置TCP套接字的TCP_KEEPIDLE屬性。這個參數對於經過Unix-domain socket創建的數據庫鏈接沒有任何影響。 tcp_keepalives_interval (integer) 這個參數能夠在任什麼時候候被設置。默認值是0,意思是使用操做系統的默認值。它設置TCP套接字的TCP_KEEPINTVL屬性。這個參數對於經過Unix-domain socket創建的數據庫鏈接沒有任何影響。 tcp_keepalives_count (integer) 這個參數能夠在任什麼時候候被設置。默認值是0,意思是使用操做系統的默認值。它設置TCP套接字的TCP_KEEPCNT屬性。這個參數對於經過Unix-domain socket創建的數據庫鏈接沒有任何影響。 10.2.2. 安全與認證 authentication_timeout (integer) 這個參數只能在postgresql.conf文件中被設置,它指定一個時間長度,在這個時間長度內,必須完成客戶端認證操做,不然客戶端鏈接請求將被拒絕。它能夠阻止某些客戶端進行認證時長時間佔用數據庫鏈接。單位是秒,默認值是60。 ssl (boolean) 這個參數只有在啓動數據庫時,才能被設置。決定數據庫是否接受SSL鏈接。默認值是off。 ssl_ciphers (string) 指定可使用的SSL加密算法。查看操做系統關於openssl的用戶手冊能夠獲得完整的加密算法列表(執行命令openssl ciphers –v也能夠獲得)。 10.3 資源消耗 10.3.1 內存 shared_buffers (integer) 這個參數只有在啓動數據庫時,才能被設置。它表示數據緩衝區中的數據塊的個數,每一個數據塊的大小是8KB。數據緩衝區位於數據庫的共享內存中,它越大越好,不能小於128KB。默認值是1024。 temp_buffers (integer) 這個參數能夠在任什麼時候候被設置。默認值是8MB。它決定存放臨時表的數據緩衝區中的數據塊的個數,每一個數據塊的大小是8KB。臨時表緩衝區存放在每一個數據庫進程的私有內存中,而不是存放在數據庫的共享內存中。默認值是1024。 max_prepared_transactions (integer) 這個參數只有在啓動數據庫時,才能被設置。它決定可以同時處於prepared狀態的事務的最大數目(參考PREPARE TRANSACTION命令)。若是它的值被設爲0。則將數據庫將關閉prepared事務的特性。它的值一般應該和max_connections的值同樣大。默認值是5。 work_mem (integer) 這個參數能夠在任什麼時候候被設置。它決定數據庫的排序操做和哈希表使用的內存緩衝區的大小。如何work_mem指定的內存被耗盡,數據庫將使用磁盤文件進行完成操做,速度會慢不少。ORDER BY、DISTINCT和merge鏈接會使用排序操做。哈希表在Hash鏈接、hash彙集函數和用哈希表來處理IN謂詞中的子查詢中被使用。單位是KB,默認值是1024。 maintenance_work_mem (integer) 這個參數能夠在任什麼時候候被設置。它決定數據庫的維護操做使用的內存空間的大小。數據庫的維護操做包括VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等操做。 maintenance_work_mem的值若是比較大,一般能夠縮短VACUUM數據庫和從dump文件中恢復數據庫須要的時間。maintenance_work_mem存放在每一個數據庫進程的私有內存中,而不是存放在數據庫的共享內存中。單位是KB,默認值是16384。 max_stack_depth (integer) 這個參數能夠在任什麼時候候被設置,但只有數據庫超級用戶才能修改它。它決定一個數據庫進程在運行時的STACK所佔的空間的最大值。數據庫進程在運行時,會自動檢查本身的STACK大小是否超過max_stack_depth,若是超過,會自動終止當前事務。這個值應該比操做系統設置的進程STACK的大小的上限小1MB。使用操做系統命令「ulimit –s「能夠獲得操做系統設置的進程STACK的最大值。單位是KB,默認值是100。 10.3.2 Free Space Map 數據庫的全部可用空間信息都存放在一個叫free space map (FSM)的結構中,它記載數據文件中每一個數據塊的可用空間的大小。FSM中沒有記錄的數據塊,即便有可用空間,也不會系統使用。系統若是須要新的物理存儲空間,會首先在FSM中查找,若是FSM中沒有一個數據頁有足夠的可用空間,系統就會自動擴展數據文件。因此,FSM若是過小,會致使系統頻繁地擴展數據文件,浪費物理存儲空間。命令VACUUM VERBOSE在執行結束之後,會提示當前的FSM設置是否知足須要,若是FSM的參數值過小,它會提示增大參數。 FSM存放在數據庫的共享內存中,因爲物理內存的限制,FSM不可能跟蹤數據庫的全部的數據文件的全部數據塊的可用空間信息,只能跟蹤一部分數據塊的可用空間信息。 max_fsm_relations (integer) 這個參數只有在啓動數據庫時,才能被設置。默認值是1000。它決定FSM跟蹤的表和索引的個數的上限。每一個表和索引在FSM中佔7個字節的存儲空間。 max_fsm_pages (integer) 這個參數只有在啓動數據庫時,才能被設置。它決定FSM中跟蹤的數據塊的個數的上限。initdb在建立數據庫集羣時會根據物理內存的大小決定它的值。每一個數據塊在fsm中佔6個字節的存儲空間。它的大小不能小於16 * max_fsm_relations。默認值是20000。 10.3.3 內核資源 max_files_per_process (integer) 這個參數只有在啓動數據庫時,才能被設置。他設定每一個數據庫進程可以打開的文件的數目。默認值是1000。 shared_preload_libraries (string) 這個參數只有在啓動數據庫時,才能被設置。它設置數據庫在啓動時要加載的操做系統共享庫文件。若是有多個庫文件,名字用逗號分開。若是數據庫在啓動時未找到shared_preload_libraries指定的某個庫文件,數據庫將沒法啓動。默認值爲空串。 10.3.4 垃圾收集 執行VACUUM 和ANALYZE命令時,由於它們會消耗大量的CPU與IO資源,並且執行一次要花很長時間,這樣會干擾系統執行應用程序發出的SQL命令。爲了解決這個問題,VACUUM 和ANALYZE命令執行一段時間後,系統會暫時終止它們的運行,過一段時間後再繼續執行這兩個命令。這個特性在默認的狀況下是關閉的。將參數vacuum_cost_delay設爲一個非零的正整數就能夠打開這個特性。 用戶一般只須要設置參數vacuum_cost_delay和vacuum_cost_limit,其它的參數使用默認值便可。VACUUM 和ANALYZE命令在執行過程當中,系統會計算它們執行消耗的資源,資源的數量用一個正整數表示,若是資源的數量超過vacuum_cost_limit,則執行命令的進程會進入睡眠狀態,睡眠的時間長度是是vacuum_cost_delay。vacuum_cost_limit的值越大,VACUUM 和ANALYZE命令在執行的過程當中,睡眠的次數就越少,反之,vacuum_cost_limit的值越小,VACUUM 和ANALYZE命令在執行的過程當中,睡眠的次數就越多。 vacuum_cost_delay (integer) 這個參數能夠在任什麼時候候被設置。默認值是0。它決定執行VACUUM 和ANALYZE命令的進程的睡眠時間。單位是微秒。它的值最好是10的整數,若是不是10的整數,系統會自動將它設爲比該值大的而且最接近該值的是10的倍數的整數。若是值是0,VACUUM 和ANALYZE命令在執行過程當中不會主動進入睡眠狀態,會一直執行下去直到結束。 vacuum_cost_page_hit (integer) 這個參數能夠在任什麼時候候被設置。默認值是1。 vacuum_cost_page_miss (integer) 這個參數能夠在任什麼時候候被設置。默認值是10。 vacuum_cost_page_dirty (integer) 這個參數能夠在任什麼時候候被設置。默認值是20。 vacuum_cost_limit (integer) 這個參數能夠在任什麼時候候被設置。默認值是200。 10.3.5 後臺寫數據庫進程 後臺寫數據庫進程負責將數據緩衝區中的被修改的數據塊(又叫髒數據塊)寫回到數據庫物理文件中。 bgwriter_delay (integer) 這個參數只能在文件postgresql.conf中設置。它決定後臺寫數據庫進程的睡眠時間。後臺寫數據庫進程每次完成寫數據到物理文件中的任務之後,就會睡眠bgwriter_delay指定的時間。 bgwriter_delay的值應該是10的倍數,若是用戶設定的值不是10的倍數,數據庫會自動將參數的值設爲比用戶指定的值大的最接近用戶指定的值的同時是10的倍數的值。單位是毫秒,默認值是200。 bgwriter_lru_maxpages (integer) 這個參數只能在文件postgresql.conf中設置。默認值是100。後臺寫數據庫進程每次寫髒數據塊時,寫到外部文件中的髒數據塊的個數不能超過bgwriter_lru_maxpages指定的值。例如,若是它的值是500,則後臺寫數據庫進程每次寫到物理文件的數據頁的個數不能超過500,若超過,進程將進入睡眠狀態,等下次醒來再執行寫物理文件的任務。若是它的值被設爲0, 後臺寫數據庫進程將不會寫任何物理文件(但還會執行檢查點操做)。 bgwriter_lru_multiplier (floating point) 這個參數只能在文件postgresql.conf中設置。默認值是2.0。它決定後臺寫數據庫進程每次寫物理文件時,寫到外部文件中的髒數據塊的個數(不能超過bgwriter_lru_maxpages指定的值)。通常使用默認值便可,不須要修改這個參數。這個參數的值越大,後臺寫數據庫進程每次寫的髒數據塊的個數就越多。 10.4 事務日誌 full_page_writes (boolean) 這個參數只能在postgresql.conf文件中被設置。默認值是on。打開這個參數,能夠提升數據庫的可靠性,減小數據丟失的機率,可是會產生過多的事務日誌,下降數據庫的性能。 wal_buffers (integer) 這個參數只有在啓動數據庫時,才能被設置。默認值是8。它指定事務日誌緩衝區中包含的數據塊的個數,每一個數據塊的大小是8KB,因此默認的事務日誌緩衝區的大小是8*8=64KB。事務日誌緩衝區位於數據庫的共享內存中。 wal_writer_delay (integer) 這個參數只能在postgresql.conf文件中被設置。它決定寫事務日誌進程的睡眠時間。WAL進程每次在完成寫事務日誌的任務後,就會睡眠wal_writer_delay指定的時間,而後醒來,繼續將新產生的事務日誌從緩衝區寫到WAL文件中。單位是毫秒(millisecond),默認值是200。 commit_delay (integer) 這個參數能夠在任什麼時候候被設置。它設定事務在發出提交命令之後的睡眠時間,只有在睡眠了commit_delay指定的時間之後,事務產生的事務日誌纔會被寫到事務日誌文件中,事務才能真正地提交。增大這個參數會增長用戶的等待時間,可是可讓多個事務被同時提交,提升系統的性能。若是數據庫中的負載比較高,並且大部分事務都是更新類型的事務,能夠考慮增大這個參數的值。下面的參數commit_siblings會影響commit_delay是否生效。默認值是0,單位是微秒(microsecond)。 commit_siblings (integer) 這個參數能夠在任什麼時候候被設置。這個參數的值決定參數commit_delay是否生效。假設commit_siblings的值是5,若是一個事務發出一個提交請求,此時,若是數據庫中正在執行的事務的個數大於或等於5,那麼該事務將睡眠commit_delay指定的時間。若是數據庫中正在執行的事務的個數小於5,這個事務將直接提交。默認值是5。 10.5 檢查點 checkpoint_segments (integer) 這個參數只能在postgresql.conf文件中被設置。默認值是3。它影響系統什麼時候啓動一個檢查點操做。若是上次檢查點操做結束之後,系統產生的事務日誌文件的個數超過checkpoint_segments的值,系統就會自動啓動一個檢查點操做。增大這個參數會增長數據庫崩潰之後恢復操做須要的時間。 checkpoint_timeout (integer) 這個參數只能在postgresql.conf文件中被設置。單位是秒,默認值是300。它影響系統什麼時候啓動一個檢查點操做。若是如今的時間減去上次檢查點操做結束的時間超過了checkpoint_timeout的值,系統就會自動啓動一個檢查點操做。增大這個參數會增長數據庫崩潰之後恢復操做須要的時間。 checkpoint_completion_target (floating point) 這個參數控制檢查點操做的執行時間。合法的取值在0到1之間,默認值是0.5。不要輕易地改變這個參數的值,使用默認值便可。 這個參數只能在postgresql.conf文件中被設置。 10.6 歸檔模式 archive_mode (boolean) 這個參數只有在啓動數據庫時,才能被設置。默認值是off。它決定數據庫是否打開歸檔模式。 archive_dir (string) 這個參數只有在啓動數據庫時,才能被設置。默認值是空串。它設定存放歸檔事務日誌文件的目錄。 archive_timeout (integer) 這個參數只能在postgresql.conf文件中被設置。默認值是0。單位是秒。若是archive_timeout的值不是0,並且當前時間減去數據庫上次進行事務日誌文件切換的時間大於archive_timeout的值,數據庫將進行一次事務日誌文件切換。通常狀況下,數據庫只有在一個事務日誌文件寫滿之後,纔會切換到下一個事務日誌文件,設定這個參數可讓數據庫在一個事務日誌文件還沒有寫滿的狀況下切換到下一個事務日誌文件。 10.7 優化器參數 10.7.1 存取方法參數 下列參數控制查詢優化器是否使用特定的存取方法。除非對優化器特別瞭解,通常狀況下,使用它們默認值便可。 enable_bitmapscan (boolean) 打開或者關閉bitmap-scan 。默認值是 on。 enable_hashagg (boolean) 打開或者關閉hashed aggregation。默認值是 on。 enable_hashjoin (boolean) 打開或者關閉hash-join。默認值是 on。 enable_indexscan (boolean) 打開或者關閉index-scan。默認值是 on。 enable_mergejoin (boolean) 打開或者關閉merge-join。默認值是 on。 enable_nestloop (boolean) 打開或者關閉nested-loop join。默認值是 on。不可能徹底不使用nested-loop join,關閉這個參數會讓系統在有其它存取方法可用的狀況下,不使用nested-loop join。 enable_seqscan (boolean) 打開或者關閉sequential scan。默認值是 on。不可能徹底不使用sequential scan,關閉這個參數會讓系統在有其它存取方法可用的狀況下,不使用sequential scan。 enable_sort (boolean) 打開或者關閉explicit sort。默認值是 on。不可能徹底不使用explicit sort,關閉這個參數會讓系統在有其它存取方法可用的狀況下,不使用explicit sort。 enable_tidscan (boolean) 打開或者關閉TID scan。默認值是 on。 10.7.2 優化器成本常量 優化器用一個正的浮點數來表示不一樣的查詢計劃的執行成本,每一個基本的數據庫操做都會被賦給一個肯定的成本常量,優化器根據每一個基本操做的執行成原本計算每一個查詢計劃的執行成本。不要輕易地改變下面的參數的值,使用它們的默認值便可。 seq_page_cost (floating point) 設置從數據文件上順序讀取一個數據塊的執行成本。默認值是1.0。 random_page_cost (floating point) 設置從數據文件上隨機讀取一個數據塊的執行成本。默認值是4.0。 cpu_tuple_cost (floating point) 設置處理每個數據行的執行成本。默認值是0.01。 cpu_index_tuple_cost (floating point) 設置在掃描索引的過程當中處理每個索引項的執行成本。默認值是0.005。 cpu_operator_cost (floating point) 設置處理每個運算符或函數的執行成本。默認值是0.0025。 effective_cache_size (integer) 設置單個查詢可使用的數據緩衝區的大小。默認值是128MB。 10.7.3 Genetic Query Optimizer 下列參數控制優化器使用的遺傳算法。除非對遺傳算法特別瞭解,通常狀況下,使用它們默認值便可。 geqo (boolean) 打開或者關閉遺傳優化器。默認值是on。 geqo_threshold (integer) 肯定使用遺傳優化器的查詢類型。默認值是12。若是FROM子句中引用的的表的數目超過geqo_threshold的值,就會使用遺傳優化器。對於簡單的查詢使用窮舉優化器。 geqo_effort (integer) 控制遺傳優化器在生成查詢計劃須要的時間和查詢計劃的有效性之間作一個折中。有效的取值範圍是1到 10。默認值是5。值越大,優化器花在選擇查詢計劃的上的時間越長,同時找到一個最優的查詢計劃的可能性就越大。系統一般不直接使用geqo_effort的值,而是使用它的值來計算參數geqo_pool_size和geqo_generations的默認。 geqo_pool_size (integer) 控制遺傳優化器的池(pool)大小。默認值是0。池大小是遺傳羣體中的個體數目。至少是2,典型的取值在10和1000之間。若是參數的值是0,系統會自動根據geqo_effort的值和查詢中引用的表的個數選擇一個默認值。 geqo_generations (integer) 控制遺傳優化器的代(generation)的大小。默認值是0。代是遺傳算法的迭代次數。至少是1,典型的取值範圍與池的取值範圍相同。若是參數的值是0,系統會自動根據geqo_pool_size的值和選擇一個默認值。 geqo_selection_bias (floating point) 控制遺傳優化器的代選擇誤差(selection bias)的大小。默認值是2。取值範圍在1.50到2.00之間。 10.7.4 其它優化器參數 default_statistics_target (integer) 設置默認的收集優化器統計數據的目標值。它的值越大,ANALYZE操做的執行的時間越長,掃描的數據行的個數也就越多,獲得的優化器統計數據就越準確。也可使用命令ALTER TABLE ... ALTER COLUMN ... SET STATISTICS來爲表的每一個列設置一個單獨的統計數據目標值,這個值的做用與參數default_statistics_target是同樣,它隻影響相關的列的統計數據收集過程。默認值是10。 constraint_exclusion (boolean) 若是該參數的值是on,查詢優化器將使用表上的約束條件來優化查詢。若是它的值是off,查詢優化器不會使用表上的約束條件來優化查詢。默認值是off。 10.8 數據庫運行日誌配置參數 log_directory (string) 這個參數只能在postgresql.conf文件中被設置。它決定存放數據庫運行日誌文件的目錄。默認值是pg_log。能夠是絕對路徑,也但是相對路徑(相對於數據庫文件所在的路徑)。 log_filename (string) 它決定數據庫運行日誌文件的名稱。默認值是postgresql-%Y-%m-%d_%H%M%S.log。它的值能夠包含%Y、%m、%d、%H、%M和%S這樣的字符串,分別表示年、月、日、小時、分和秒。 若是參數的值中沒有指定時間信息(沒有出現%Y、%m、%d、%H、%M和%S中的任何一個),系統會自動在log_filename值的末尾加上文件建立的時間做爲文件名,例如,若是log_filename的值是 server_log,那麼在Sun Aug 29 19:02:33 2004 MST被建立的日誌文件的名稱將是server_log.1093827753,1093827753是Sun Aug 29 19:02:33 2004 MST在數據庫內部的表示形式。這個參數只能在postgresql.conf文件中被設置。 log_rotation_age (integer) 它決定什麼時候建立一個新的數據庫日誌文件。單位是分鐘。默認值是0。若是如今的時間減去上次建立一個數據庫運行日誌的時間超過了log_rotation_age的值,數據庫將自動建立一個新的運行日誌文件。若是它的值是0,該參數將不起任何做用。這個參數只能在postgresql.conf文件中被設置。 log_rotation_size (integer) 這個參數只能在postgresql.conf文件中被設置。它決定什麼時候建立一個新的數據庫日誌文件。單位是KB。默認值是10240。若是一個日誌文件寫入的數據量超過log_rotation_size的值,數據庫將建立一個新的日誌文件。若是它的值被設爲0,該參數將不起任何做用。 log_truncate_on_rotation (boolean) 系統在建立一個新的數據庫運行日誌文件時,若是發現存在一個同名的文件,當log_truncate_on_rotation的值是on時,系統覆蓋這個同名文件。當log_truncate_on_rotation的值是off時,系統將重用這個同名文件,在它的末尾添加新的日誌信息。另外要注意的是,只有在由於參數log_rotation_age起做用系統才建立新的日誌文件的狀況下,纔會覆蓋同名的日誌文件。由於數據庫從新啓動或者由於參數log_rotation_size起做用而建立新的日誌文件,不會覆蓋同名的日誌文件,而是在同名的日誌文件末尾添加新的日誌信息。這個參數只能在postgresql.conf文件中被設置。默認值是off。 例如,將這個參數設爲on,將log_rotation_age設爲60,將同時將log_filename設爲postgresql-%H.log,系統中一共將只有24個日誌文件,它們會被不斷地重用,任什麼時候刻,系統中最多隻有最近24小時的日誌信息。 client_min_messages (string) 控制發送給客戶端的消息級別。合法的取值是DEBUG五、DEBUG四、DEBUG三、DEBUG二、DEBUG一、LOG、NOTICE、WARNING、ERROR、FATAL和PANIC,每一個級別都包含排在它後面的全部級別中的信息。級別越低,發送給客戶端的消息就越少。 默認值是NOTICE。這個參數能夠在任什麼時候候被設置。 log_min_messages (string) 控制寫到數據庫日誌文件中的消息的級別。合法的取值是DEBUG五、DEBUG四、DEBUG三、DEBUG二、DEBUG一、INFO、NOTICE、WARNING、ERROR、 LOG、FATAL和PANIC,每一個級別都包含排在它後面的全部級別中的信息。級別越低,數據庫運行日誌中記錄的消息就越少。默認值是NOTICE。只有超級用戶才能修改這個參數。只有超級用戶才能設置這個參數。 log_error_verbosity (string) 控制每條日誌信息的詳細程度。合法的取值是TERSE、DEFAULT和VERBOSE(每一個取值都比它前面的取值提供更詳細的信息)。只有超級用戶才能修改這個參數。默認值是DEFAULT。 log_min_error_statement (string) 控制日誌中是否記錄致使數據庫出現錯誤的SQL語句。合法的取值是DEBUG五、DEBUG四、DEBUG三、DEBUG二、DEBUG一、INFO、NOTICE、WARNING、ERROR、 LOG、FATAL和PANIC,每一個級別都包含排在它後面的全部級別。默認值是ERROR。只有超級用戶才能修改這個參數。 表 10-1. 消息嚴重級別 嚴重級別 用法 DEBUG1..DEBUG5 報告詳細的調試信息。 INFO 報告用戶可能須要的信息。 NOTICE 報告對用戶有用的信息。 WARNING 報告警告信息。 ERROR 報告錯誤信息。 LOG 報告對數據庫管理員有用的信息, 例如,檢查點操做統計信息。 FATAL 報告致使當前會話被終止的錯誤信息。 PANIC 報告致使整個數據庫被關閉的錯誤信息。 debug_print_parse (boolean) debug_print_rewritten (boolean) debug_print_plan (boolean) debug_pretty_print (boolean) 這些參數控制數據庫是否輸出運行時的調試信息。這些參數的默認值是off。這些參數能夠被任何用戶設置。 log_checkpoints (boolean) 控制是否及記錄檢查點操做信息。默認值是off。這個參數只能在postgresql.conf文件中被設置。必須重啓數據庫才能生效。 log_connections (boolean) 控制是否及記錄客戶端鏈接請求信息。默認值是off。這個參數只能在postgresql.conf文件中被設置。必須重啓數據庫才能生效。 log_disconnections (boolean) 控制是否記錄客戶端結束鏈接信息。默認值是off。這個參數只能在postgresql.conf文件中被設置。 log_duration (boolean) 控制是否記錄每一個完成的SQL語句的執行時間。只有超級用戶才能修改這個參數。默認值是off。對於使用擴展協議與數據庫通訊的客戶端,會記載Parse、Bind和Execute的執行時間。 log_hostname (boolean) 控制是否及記錄客戶端的主機名。默認值是off。若是設爲on,可能會影響數據庫的性能,由於解析主機名可能須要必定的時間。這個參數只能在postgresql.conf文件中被設置。這個參數只能在postgresql.conf文件中被設置。 log_line_prefix (string) 控制每條日誌信息的前綴格式。默認值是空串。它的格式相似c語言中printf函數的format字符串。這個參數只能在postgresql.conf文件中被設置。 轉義序列 含義 %u 用戶名 %d 數據庫名 %r 客戶端機器名或IP地址,還有客戶端端口 %h 客戶端機器名或IP地址 %p 進程ID %t 帶微秒的時間 %m 不帶微秒的時間 %i 命令標籤: 會話當前執行的命令類型 %c 會話ID %l 每一個會話的日誌編號,從1開始 %s 進程啓動時間 %v 虛擬事務ID (backendID/localXID) %x 事務ID (0表示沒有分配事務ID) %q 不產生任何輸出。若是當前進程是backend進程,忽略這個轉義序列,繼續處理後面的轉義序列。若是當前進程不是backend進程, 忽略這個轉義序列和它後面的全部轉義序列。 %% 字符% log_lock_waits (boolean) 若是一個會話等待某個類型的鎖的時間超過deadlock_timeout的值,該參數決定是否在數據庫日誌中記錄這個信息。默認值是off。只有超級用戶才能修改這個參數。 log_statement (string) 控制記錄哪一種SQL語句的執行信息。有效的取值是none、ddl、mod和all。默認值是none。ddl包括全部數據定義語句,如CREATE、ALTER和DROP語句。mod包括全部ddl語句和更新數據的語句,例如INSERT、UPDATE、DELETE、TRUNCATE、 COPY FROM、PREPARE和 EXECUTE。All包括全部的語句。只有超級用戶才能修改這個參數。 log_temp_files (integer) 控制是否記錄臨時文件的刪除信息。單位是KB。0表示記錄全部臨時文件的刪除信息。正整數表示只記錄大小比log_temp_files的值大的臨時文件的刪除信息。-1表示不記錄任何臨時文件刪除信息。默認值是-1。這個參數能夠在任什麼時候候被設置。 log_timezone (string) 設置數據庫日誌文件在寫日誌文件時使用的時區。默認值是unknown,意識是使用操做系統的時區。這個參數只能在postgresql.conf文件中被設置。 10.9 數據庫運行統計數據相關參數 下面的參數控制是否蒐集特定的數據庫運行統計數據: track_activities (boolean) 是否收集每一個會話的當前正在執行的命令的統計數據,包括命令開始執行的時間。默認值是on。只有超級用戶才能修改這個參數。 track_counts (boolean) 是否收集數據庫活動的統計數據。默認值是on。只有超級用戶才能修改這個參數。 log_statement_stats (boolean) log_parser_stats (boolean) log_planner_stats (boolean) log_executor_stats (boolean) 這些參數決定是否在數據庫的運行日誌裏記載每一個SQL語句執行的統計數據。若是log_statement_stats的值是on,其它的三個參數的值必須是off。全部的這些參數的默認值都是off。log_statement_stats報告整個語句的統計數據,log_parser_stats記載數據庫解析器的統計數據,log_planner_stats報告數據庫查詢優化器的統計數據,log_executor_stats報告數據庫執行器的統計數據。只有超級用戶才能修改這些參數。 10.10 自動垃圾收集相關參數 下面的參數控制自動垃圾收集的行爲: autovacuum (boolean) 控制是夠打開數據庫的自動垃圾收集功能。默認值是on。若是autovacuum被設爲on,參數track_counts(參考本章10.9)也要被設爲on,自動垃圾收集才能正常工做。注意,即便這個參數被設爲off,若是事務ID迴繞即將發生,數據庫會自動啓動一個垃圾收集操做。這個參數只能在文件postgresql.conf中被設置。 log_autovacuum_min_duration (integer) 單位是毫秒。若是它的值爲0,全部的垃圾蒐集操做都會被記錄在數據庫運行日誌中,若是它的值是-1,全部的垃圾收集操做都不會被記錄在數據庫運行日誌中。若是把它的值設爲250毫秒,只要自動垃圾蒐集發出的VACUUM和ANALYZE命令的執行時間超過250毫秒,VACUUM和ANALYZE命令的相關信息就會被記錄在數據庫運行日誌中。默認值是-1。這個參數只能在 postgresql.conf中被設置。 autovacuum_max_workers (integer) 設置能同時運行的最大的自動垃圾收集工做進程的數目。默認值是3。這個參數只能在文件postgresql.conf中被設置。 autovacuum_naptime (integer) 設置自動垃圾收集控制進程的睡眠時間。單位是秒,默認值是60。這個參數只能在文件postgresql.conf中被設置。 autovacuum_vacuum_threshold (integer) 設置觸發垃圾收集操做的閾值。默認值是50。這個參數只能在文件postgresql.conf中被設置。只有一個表上被刪除或更新的記錄的數目超過了autovacuum_vacuum_threshold的值,纔會對這個表執行垃圾收集操做。 autovacuum_analyze_threshold (integer) 設置觸發ANALYZE操做的閾值。默認值是50。這個參數只能在文件postgresql.conf中被設置。只有一個表上被刪除、插入或更新的記錄的數目超過了autovacuum_analyze_threshold的值,纔會對這個表執行ANALYZE操做。 autovacuum_vacuum_scale_factor (floating point) 這個參數與什麼時候對一個表進行垃圾收集操做相關。默認值是0.2。這個參數只能在文件postgresql.conf中被設置。 autovacuum_analyze_scale_factor (floating point) 這個參數與什麼時候對一個表進行ANALYZE操做相關。默認值是0.1。這個參數只能在文件postgresql.conf中被設置。 10.11 鎖管理參數 deadlock_timeout(integer) 設置死鎖超時檢測時間。單位是微秒,默認值是1000。死鎖檢測是一個消耗許多 CPU資源的操做。這個參數的值不能過小。在數據庫負載比較大的狀況下,應當增大這個參數的值。 max_locks_per_transaction(integer) 這個參數控制每一個事務可以獲得的平均的對象鎖的個數。默認值是64。數據庫在啓動之後建立的共享鎖表的最大能夠保存max_locks_per_transaction * (max_connections + max_prepared_transactions)個對象鎖。單個事務能夠同時得到的對象鎖的數目能夠超過max_locks_per_transaction的值,只要共享鎖表中還有剩餘空間。 10.12 系統預設參數 這些參數系統啓動後會自動設置,用戶只能查詢它們的值,不能用任何方式修改這些參數。 block_size (integer) 報告數據庫文件數據塊的大小。 integer_datetimes (boolean) 若是值爲on,表示系統內部用64位整數存儲時間/日期類型的數據。若是值是off,表示系統內部不是用64位整數存儲時間/日期類型的數據。 lc_collate (string) 報告字符排序設置。 lc_ctype (string) 報告字符分類設置。 max_function_args (integer) 報告函數參數的最大個數。 max_identifier_length (integer) 報告標識符的最大長度。 max_index_keys (integer) 報告索引的關鍵字中列的最大數目。 server_encoding (string) 報告服務器的字符編碼名稱。 server_version (string) 報告服務器的版本號。 server_version_num (integer) 報告服務器的小版本號。 data_directory (string) 數據文件所在的目錄。 config_file (string) 數據庫參數配置文件名。 hba_file (string) 數據庫hba文件名。 external_pid_file (string) 數據庫PID文件名。 10.13 其它參數 default_with_oids (boolean) 該參數控制CREATE TABLE 和CREATE TABLE AS命令是否給新建的表添加一個系統列OID。若是它的值是on,CREATE TABLE 和CREATE TABLE AS命令在沒有指定WITH OIDS 和WITHOUT OIDS子句的狀況下,新建的表將包含系統列OID,同時SELECT INTO命令也會將系統列OID添加到新建的表中去。默認值是off。 search_path (string) 設置模式搜索路徑。它的值由一個或多個模式名構成,不一樣的模式名用逗號隔開。默認值是'"$user", public',$user表示與當前會話用戶名同名的模式名,若是這樣的模式不存在,$user將被忽略。 系統表所在的模式pg_catalog,若是出如今search_path中,它會按指定的順序被搜索。若是它沒有出如今search_path中,則老是排在search_path中指定的全部模式前面被搜索。 當前會話若是存在存放臨時表的模式,可使用別名pg_tmp將它列在搜索路徑中,例如,'"$user", public, pg_tmp'。若是存放臨時表的模式沒有出如今搜索路徑中,則它會做爲第一個搜索對象,排在pg_catalog和search_path中全部模式的前面。注意,系統只會在存放臨時表的模式中搜索表、視圖、序列對象和數據類型這樣的數據庫對象,不會在裏面搜索函數或運算符這樣的數據庫對象。 default_tablespace (string) 設置默認表空間。默認值是空串。 temp_tablespaces (string) 設置默認的存放臨時對象的表空間。默認值是空串。它的值由一個或多個表空間組成,不一樣的值用逗號隔開。 check_function_bodies (boolean) 設置是否驗證CREATE FUNCTION.命令中指定的函數體。默認值是on。關閉這個選項能夠在從dump文件中恢復函數定義信息時避免系統報錯,由於一個正在恢復的函數可能會引用還沒有恢復的函數。 default_transaction_isolation (string) 默認的事務隔離級別。合法的取值是"read uncommitted"、"read committed"、"repeatable read」和"serializable"。 默認值是read committed。 default_transaction_read_only (boolean) 設置每一個新建立的事務是不是隻讀的。默認值是off。只讀事務只能修改臨時表。詳細信息參考SQL命令SET TRANSACTION。 session_replication_role (string) 控制與複製有關的觸發器和規則的行爲。可能的取值是origin、replica和local,默認值是origin。 statement_timeout(integer) 設置語句執行的超時值。若是一個語句執行的時間超過statement_timeout指定的值,該語句就會被強行終止。若是它的值爲0,則關閉超時特性。單位是毫秒,默認值是0。最好不要在文件postgresql.conf中設置這個參數,由於它影響全部的會話。 xmlbinary (string) 設置XML文檔中二進制數據的編碼類型。它的值能夠是base64和hex。默認值是base64。、 xmloption (string) 設置在字符串和XML數據之間進行類型轉換時使用的XML文檔類型。它的值是DOCUMENT 或者CONTENT,默認值是CONTENT。 DateStyle (string) 設置時間和日期值的顯示格式。initdb會將這個參數初始化成與lc_time一致的值。 timezone (string) 設置顯示和解釋時間類型數值時使用的時區。 timezone_abbreviations (string) 設置數據庫接受的時區縮寫值。默認值是Default,表明一些通用的時區縮寫。 extra_float_digits(integer) 控制浮點數顯示時的有效的數值位的最大個數。float4類型的數的顯示精度是6+ extra_float_digits, float8類型的數的顯示精度是15+ extra_float_digits。有效的取值範圍是-15到2。默認值是0。 client_encoding (string) 設置客戶端的字符編碼類型。默認值是數據庫的字符編碼類型。 lc_monetary (string) 設置貨幣值的顯示格式。它影響to_char之類的函數的輸出。 lc_numeric (string) 設置數值的顯示格式。它影響to_char之類的函數的輸出。 default_text_search_config (string) 設定全文檢索的配置信息,默認值是pg_catalog.simple。 explain_pretty_print (boolean) 設置EXPLAIN VERBOSE命令的是否打開idented輸出格式。默認值是on。 dynamic_library_path (string) 設置數據查找動態加載的共享庫文件的路徑。若是CREATE FUNCTION或LOAD命令沒有指定庫文件所在的路徑,系統將在dynamic_library_path指定的目錄中查找指定的庫文件。它的值由一個或多個操做系統目錄路徑組成,不一樣的路徑用冒號隔開。例如,dynamic_library_path = '/usr/local/lib/postgresql:/home/my_project/lib:$libdir',其中的:$libdir表示PostgreSQL本身內置的共享庫的路徑,使用命令pg_config –pkglibdir能夠找到這個路徑。默認值是'$libdir'。若是它的值是空串,自動路徑搜索將被關閉。超級用戶能夠在任什麼時候候修改這個參數,推薦在文件postgresql.conf中配置這個參數。 gin_fuzzy_search_limit (integer) 設置GIN索引返回的集合的大小的上限。 backslash_quote 有三種取值,分別是on、off和safe_encoding。on表示能夠在字符串中用\'表示但引號。off表示\只是一個普通字符,單個單引號必須用兩個連續的單引號表示。safe_encoding與on的功能基本相同,但它比on更安全,推薦使用safe_encoding。默認值是safe_encoding。這個參數能夠在任什麼時候候被設置。 regex_flavor(string) 設置系統接受的正則表達式的類型。取值能夠是advanced、extended和basic。默認值是advanced。這個參數能夠在任什麼時候候被設置。 standard_conforming_strings (boolean) 若是是on,系統會將sql命令中的字符串中的字符「\」做爲普通的字符看待,而不是做爲轉義字符看待。若是是off,系統會將sql命令中的字符「\」做爲轉義字符看待。默認值是off。這個參數能夠在任什麼時候候被設置。 synchronize_seqscans (boolean) 若是這個參數的值是是on,多個查詢若是同時順序掃描一個表中的同一個數據頁,系統只會發出一個IO操做來讀取這個數據頁,讀出來的數據被多個查詢共享,減小沒必要要的 IO操做,提升系統執行的效率,可是不帶 ORDER BY子句的查詢產生的結果中數據行的順序可能會發生改變。若是值爲off,這個特性將被關閉。默認值是on
相關文章
相關標籤/搜索