deadlock_timeout (integer)
這是進行死鎖檢測之前在一個鎖上等待的總時間(以毫秒計)。死鎖檢測相對昂貴,因此服務器不會在每次等待鎖時都運行這個它。我們樂觀地假設在生產應用中死鎖是不常出現的,并且只在開始檢測死鎖之前等待一會兒。增加這個值就減少了浪費在無用的死鎖檢測上的時間,但是減慢了報告真正死鎖錯誤的速度。默認是1 秒(1s),這可能是實際中你想要的最小值。在一個高負載的服務器上,你可能需要增大它。這個值的理想設置應該超過你通常的事務時間,這樣就可以減少在鎖釋放之前就開始死鎖檢查的機會。只有超級用戶可以更改這個設置。
當log_lock_waits被設置時,這個參數還可以決定發出關于鎖等待的日志之前等待的時長。如果你想調查鎖延遲,你可能希望設置一個比正常的deadlock_timeout小的值。
max_locks_per_transaction (integer)
共享鎖表跟蹤在max_locks_per_transaction * (max_connections + max_prepared_transactions) 個對象(如表)上的鎖。因此,在任何一個時刻,只有不超過這么多個可區分對象能夠被鎖住。這個參數控制為每個事務分配的對象鎖的平均數量。個體事務可以鎖住更多對象,數量可以和鎖表中能容納的所有事務的鎖一樣多。這not是能被鎖住的行數,那個值是沒有限制的。默認值 64 已經被歷史證明是足夠的,但是如果你有需要在一個事務中使用很多不同表的查詢(例如查詢一個有很多子表的父表),你可能需要提高這個值。這個參數只能在服務器啟動時設置。
當運行一個后備服務器時,你必須設置這個參數為大于等于主服務器上的值。否則,后備服務器上將不允許查詢。
max_pred_locks_per_transaction (integer)
共享謂詞鎖表跟蹤在max_pred_locks_per_transaction * (max_connections + max_prepared_transactions) 個對象(如表)上的鎖。因此,在任何一個時刻,只有不超過這么多個可區分對象能夠被鎖住。這個參數控制為每個事務分配的對象鎖的平均數量。個體事務可以鎖住更多對象,數量可以和鎖表中能容納的所有事務的鎖一樣多。這not是能被鎖住的行數,那個值是沒有限制的。默認值 64 已經在測試中被證明通常是足夠的,但是如果你有需要在一個可序列化事務中使用很多不同表的查詢(例如查詢一個有很多子表的父表),你可能需要提高這個值。這個參數只能在服務器啟動時設置。
max_pred_locks_per_relation (integer)
這可以控制在鎖被提升為覆蓋整個關系之前,單個關系的多少個頁面或元組可以被謂詞鎖定。大于或等于零的值表示絕對限制,而負值表示此設置的絕對值除以max_pred_locks_per_transaction。 缺省值為-2。 該參數只能在postgresql.conf文件或服務器命令行中設置。
max_pred_locks_per_page (integer)
控制在將鎖升級為覆蓋整個頁面之前可以對單個頁面上的多少行進行謂詞鎖定。默認值是2。此參數只能在postgresql.conf文件或服務器命令行中設置。
enable_dds (boolean)
是否開啟DDS分布式死鎖檢測算法。當設置為on(默認值)時,DDS模塊將開啟,實時監測并解除集群中存在的分布式死鎖。設置為off時,DDS分布式死鎖檢測算法模塊關閉。
enable_print_dds_debug_log (boolean)
是否開啟DDS分布式死鎖檢測算法DEBUG日志打印。當設置為off(默認值)時,不開啟DDS DEBUG日志打印。設置為on時,開啟打印。一般為開發人員進行DDS調試時開啟。