Postgresql
測量 PostgreSQL 等待鎖的時間
我想弄清楚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_type
andwait_event
inpg_stat_activity
。如果您經常看到鎖,那可能是個問題。