Postgresql

測量 PostgreSQL 等待鎖的時間

  • June 16, 2021

我想弄清楚PostgreSQL在一段時間內等待鎖的時間(在這段時間內,PostgreSQL服務了很多請求)。

我知道的

PostgreSQL 系統表pg_locks顯示一些資訊。像:

SELECT * FROM 
   pg_locks         pl   LEFT JOIN 
   pg_stat_activity psa
ON pl.pid = psa.pid;

但我仍然無法弄清楚它在鎖上花費了多長時間。

為什麼我要問這個問題

我發現當我增加 PostgreSQL 的並發性時(例如,增加每次收集的並行工作人員、最大並行工作人員或其他一些配置),我的 100 秒多執行緒 TPC-C 類工作負載變得更慢(即吞吐量更低)。所以我想弄清楚這是否是因為爭論太多。

類似的答案

對於 SQL Server:在沒有探查器的情況下,如何查看查詢等待鎖定所花費的時間?

您可以啟用log_lock_waits以獲取有關必須等待超過deadlock_timeout鎖定的會話的資訊。您可以減少deadlock_timeout以查看更短的等待時間。

除此之外,監視wait_event_typeand wait_eventin pg_stat_activity。如果您經常看到鎖,那可能是個問題。

引用自:https://dba.stackexchange.com/questions/294363