Trong bài đăng này, tôi đang chia sẻ một tập lệnh để tìm các phiên đang chặn các phiên khác trong PostgreSQL.
Thay vì tìm các phiên hoặc quy trình bị chặn, đôi khi tốt hơn nên tìm những phiên đó là gốc của việc chặn.
PostgreSQL DBA có thể sử dụng tập lệnh này để tìm nguyên nhân của các giao dịch bị chặn.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT pl.pid as blocked_pid ,psa.usename as blocked_user ,pl2.pid as blocking_pid ,psa2.usename as blocking_user ,psa.query as blocked_statement FROM pg_catalog.pg_locks pl JOIN pg_catalog.pg_stat_activity psa ON pl.pid = psa.pid JOIN pg_catalog.pg_locks pl2 JOIN pg_catalog.pg_stat_activity psa2 ON pl2.pid = psa2.pid ON pl.transactionid = pl2.transactionid AND pl.pid != pl2.pid WHERE NOT pl.granted; |