Postgresql
在 Postgres 上啟用“log_lock_waits”的性能成本是多少?
我試圖了解
log_lock_waits
在 Postgres 上啟用的性能成本是多少。根據本文件,同時
log_lock_waits = on
:
deadlock_timeout
控制當會話等待時間超過獲取鎖時是否生成日誌消息。這對於確定鎖定等待是否導致性能不佳很有用。預設值為off
. 只有超級使用者可以更改此設置。但它並沒有說明它對性能的影響有多大,而且我在其他任何地方都找不到。
這基本上是免費的,您應該在所有數據庫中啟用它,除非工作負載被設計為定期進行長時間的鎖定等待(這將是一個設計錯誤)。
這些錯誤消息是由死鎖檢測器編寫的,它執行起來很昂貴,這就是 PostgreSQL 不執行它的原因,除非有人必須等待
deadlock_timeout
幾秒鐘才能獲得鎖。1 秒非常長,因此通常不會發生這種情況(數據庫事務應該更短)。但是死鎖檢測器無論如何都必須執行,而這些日誌消息只是您免費獲得的副作用。