deadlock_timeout
(integer
) #這是等待鎖定的時間,然後檢查是否存在死鎖情況。 檢查死鎖的成本相對較高,因此伺服器不會每次等待鎖定時都執行它。 我們樂觀地假設死鎖在生產應用程式中並不常見,並且僅在鎖定上等待一段時間,然後再檢查死鎖。 增加此值會減少浪費在不必要的死鎖檢查中的時間,但會減慢真實死鎖錯誤的報告速度。 如果未指定單位,則此值將被視為毫秒。 預設值為一秒(1s
),這可能是您在實踐中想要的最小值。 在負載較重的伺服器上,您可能需要提高此值。 理想情況下,設定值應超過您典型的交易時間,以便提高在等待者決定檢查死鎖之前釋放鎖定的機率。 只有超級使用者和具有適當 SET
權限的使用者才能變更此設定。
當 log_lock_waits 設定時,此參數還決定了在發出關於鎖定等待的日誌訊息之前要等待的時間。如果您嘗試調查鎖定延遲,您可能需要設定一個比正常時間短的 deadlock_timeout
。
max_locks_per_transaction
(integer
) #共用鎖定表為每個伺服器程序或預備交易提供 max_locks_per_transaction
個物件(例如,表)的空間;因此,在任何一個時間都不能鎖定超過這個數量的不同物件。 此參數限制了每個交易使用的物件鎖定的平均數量; 只要所有交易的鎖定都適合鎖定表,個別交易就可以鎖定更多物件。 這不是可以鎖定的行數; 該值是無限的。 預設值 64 在歷史上已被證明是足夠的,但是如果您的查詢在單個交易中觸及許多不同的表(例如,查詢具有許多子系的父表),則可能需要提高此值。 只能在伺服器啟動時設定此參數。
執行備用伺服器時,您必須將此參數設定為與主伺服器上的值相同或更高。 否則,備用伺服器中將不允許查詢。
max_pred_locks_per_transaction
(integer
) #共用述詞鎖定表為每個伺服器程序或預備交易提供 max_pred_locks_per_transaction
個物件(例如,表)的空間;因此,在任何一個時間都不能鎖定超過這個數量的不同物件。 此參數限制了每個交易使用的物件鎖定的平均數量; 只要所有交易的鎖定都適合鎖定表,個別交易就可以鎖定更多物件。 這不是可以鎖定的行數; 該值是無限的。 預設值 64 在歷史上已被證明是足夠的,但是如果您的用戶端在單個可序列化的交易中觸及許多不同的表,則可能需要提高此值。 只能在伺服器啟動時設定此參數。
max_pred_locks_per_relation
(integer
) #這控制了在將鎖定提升到涵蓋整個關聯之前,可以對單個關聯的多少頁面或元組進行述詞鎖定。 大於或等於零的值表示絕對限制,而負值表示 max_pred_locks_per_transaction 除以該設定的絕對值。 預設值為 -2,這保留了以前版本的 PostgreSQL 的行為。 只能在 postgresql.conf
檔案或伺服器命令列上設定此參數。
max_pred_locks_per_page
(整數 integer
) #此設定控制在鎖定提升至涵蓋整個頁面之前,單一頁面上可以進行述詞鎖定 (predicate-locked) 的列數。預設值為 2。此參數只能在 postgresql.conf
檔案中或在伺服器命令列上設定。
如果您在文件中發現任何不正確、與您特定功能的使用經驗不符或需要進一步澄清之處,請使用此表格回報文件問題。