?
This document uses PHP Chinese website manual Release
下面的選項目的是在PostgreSQL代碼上使用, 并且在某些情況下可以幫助恢復(fù)嚴重損壞了的數(shù)據(jù)庫。在生產(chǎn)環(huán)境里沒有理由 使用這些設(shè)置。因此,我們把他們從樣例postgresql.conf 文件中排除了出去。請注意許多這些選項要求特殊的源代碼編譯標志才能運轉(zhuǎn)。
允許修改系統(tǒng)表的結(jié)構(gòu)。它可以被initdb使用。 這個值只能在服務(wù)器啟動的時候設(shè)置。
打開各種斷言檢查。這是調(diào)試助手。如果你經(jīng)歷了奇怪的問題或者崩潰, 那么你可能會想把這個打開,因為它可能暴露編程的錯誤。要使用這個 選項,我們必須在編譯PostgreSQL 的時候定義宏USE_ASSERT_CHECKING (通過configure選項 --enable-cassert完成)。請注意,如果啟用斷言 選項編譯PostgreSQL,那么 debug_assertions缺省就是 on 。
讀取系統(tǒng)表時忽略系統(tǒng)索引(但是修改系統(tǒng)表時依然同時修改索引)。 這個在從系統(tǒng)索引被破壞的表中恢復(fù)數(shù)據(jù)的時候很有用。該參數(shù)不能在 會話啟動之后修改。
如果為非零,那么在一個新的服務(wù)器進程啟動并完成認證過程之后, 就會延遲這么多秒。這樣就給我們一個機會用調(diào)試器附著在一個服務(wù)器 進程上跟蹤認證里面的異常行為。該參數(shù)不能在會話啟動之后修改。
如果為非零,那么在一個新的服務(wù)器進程派生出來之后,就會延遲這么多秒, 然后才會繼續(xù)認證過程。這樣就給我們一個機會用調(diào)試器附著在一個服務(wù)器 進程上跟蹤認證里面的異常行為。這個選項只能在服務(wù)器啟動的時候或者 在postgresql.conf文件里設(shè)置。
為 LISTEN 和 NOTIFY 命令生成大量調(diào)試輸出。LISTEN 和NOTIFY必須是 DEBUG1 或者更低才能把這些輸出 分別發(fā)送到客戶端或者服務(wù)器日志。
啟用記錄與恢復(fù)有關(guān)的調(diào)試輸出,否則無法記錄。這個參數(shù)允許用戶 覆蓋log_min_messages的設(shè)置,但只用于具體消息。 主要在調(diào)試備庫時用。有效值包括DEBUG5,DEBUG4, DEBUG3,DEBUG2,DEBUG1和LOG。 LOG(缺省值)完全不會影響記錄。其他值會記錄優(yōu)先或更高的恢復(fù)相關(guān)的 調(diào)試信息,只要具有LOG優(yōu)先;對于log_min_messages的 普通設(shè)置,會無條件的將信息發(fā)送給服務(wù)器日志。這個參數(shù)只能在postgresql.conf 文件中或服務(wù)器啟動時設(shè)置。
如果打開,發(fā)出在排序操作中的資源使用的有關(guān)信息。這個選項只有在編譯 PostgreSQL的時候定義了 TRACE_SORT宏的時候才可用(不過,目前 TRACE_SORT缺省就是定義了的值)。
如果開啟,發(fā)出鎖使用情況的信息。dump信息中包括鎖操作的類型,鎖的類型和 被鎖或未鎖的對象的唯一標識符。同樣包括的還有已經(jīng)授予這個對象的鎖類型的位掩碼和 等待這個對象的鎖類型的位掩碼。對每一個鎖來說,授權(quán)鎖和等待鎖個數(shù)的統(tǒng)計也會一起dump。 一個日志文件輸出的例子如下:
LOG: LockAcquire: new: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: GrantLock: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(2) req(1,0,0,0,0,0,0)=1 grant(1,0,0,0,0,0,0)=1 wait(0) type(AccessShareLock) LOG: UnGrantLock: updated: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(AccessShareLock) LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) grantMask(0) req(0,0,0,0,0,0,0)=0 grant(0,0,0,0,0,0,0)=0 wait(0) type(INVALID)
被dump的結(jié)構(gòu)的詳細信息可以在src/include/storage/lock.h中查看。
如果在編譯PostgreSQL時定義了LOCK_DEBUG宏,才可以使用這個參數(shù)。
如果開啟,發(fā)出輕量級鎖的使用信息。 輕量級鎖主要是為了主要的目的是提供互斥訪問共享內(nèi)存的數(shù)據(jù)結(jié)構(gòu)。
如果在編譯PostgreSQL時定義了LOCK_DEBUG宏,才可以使用這個參數(shù)。
如果開啟了,發(fā)出關(guān)于用戶鎖定使用的信息。與trace_locks的輸出一樣, 不過是只用于用戶鎖。
從8.2開始就廢除了用戶鎖,這個選項現(xiàn)在已經(jīng)無效了。
如果在編譯PostgreSQL時定義了LOCK_DEBUG宏, 才可以使用這個參數(shù)。
如果設(shè)置了,不會跟蹤小于這個OID的鎖。
如果在編譯PostgreSQL時定義了LOCK_DEBUG宏, 才可以使用這個參數(shù)。
無條件地跟蹤此表上的鎖(OID).
如果在編譯PostgreSQL時定義了LOCK_DEBUG宏, 才可以使用這個參數(shù)。
如果設(shè)置,死鎖時發(fā)生超時,dump所有當前鎖的信息。
如果在編譯PostgreSQL時定義了LOCK_DEBUG宏, 才可以使用這個參數(shù)。
如果設(shè)置,會記錄B-tree操作上的系統(tǒng)資源使用情況統(tǒng)計(內(nèi)存和CPU)。
如果在編譯PostgreSQL時定義了BTREE_BUILD_STATS宏, 才可以使用這個參數(shù)。
打開 WAL 相關(guān)的調(diào)試輸出。只有在編譯PostgreSQL 的時候打開了WAL_DEBUG宏的情況下,這個選項才可用。
如果偵測到一個損壞了的頁面頭通常會導(dǎo)致PostgreSQL 報告一個錯誤,并且退出當前命令。把zero_damaged_pages 設(shè)置為 on 則令系統(tǒng)報告一個警告,把損壞的頁面填充零,然后繼續(xù)處理。 這種行為會will destroy data,也就是所有在已經(jīng)損壞 頁面上的行。但是它允許你繞開壞頁面然后從表中尚存的未損壞頁面上繼續(xù) 檢索數(shù)據(jù)行。因此它在因為硬件或者軟件錯誤導(dǎo)致的崩潰中進行恢復(fù)是很 有用的。通常你不應(yīng)該把它設(shè)置為 on ,除非你已經(jīng)徹底放棄從崩潰 的頁面中恢復(fù)數(shù)據(jù)。缺省的設(shè)置是off,并且只有超級 用戶可以改變它。