pg_locks
С помощью pg_locks можно посмотреть какие транзакции держат блокировки, какие ждут, типы блокировок и анализировать причины ожиданий, дедлоков и длительных транзакций.
Колонки:
locktype(text) — тип блокируемого объекта. Возможные значения: relation (таблица, индекс, последовательность), page (страница данных внутри отношения), tuple (отдельная строка (кортеж)), transactionid (транзакция), virtualxid (виртуальный идентификатор транзакции), object (другие объекты БД (напр., типы данных)), userlock (пользовательские блокировки), и др.database(oid) — OID базы данных, к которой относится блокировка (для глобальных объектов — 0)relation(oid) — OID таблицы, индекса и т.п (если блокировка относится к отношению)page(integer) — номер страницы внутри отношения (для блокировок уровня страницы)tuple— позиция кортежа на странице (для блокировок строк)virtualxid(text) — виртуальный идентификатор транзакцииtransactionid(xid) — идентификатор транзакции, удерживающей или ожидающей блокировкуclassid(oid) — OID системного каталога, если блокировка относится к объекту каталогаobjid(oid) — OID конкретного объекта внутри каталога (например, OID типа данных)objsubid(smallint) — номер столбца для блокировок отдельных столбцов (0 если блокировка всего объекта)virtualtransaction(text) — идентификатор виртуальной транзакции связанной с блокировкойpid(integer) — PID серверного процесса, удерживающего или ожидающего блокировкуmode(text) — режим блокировки, определяющий тип доступа. Возможные значения: AccessShareLock, RowShareLock, ShareRowExclusiveLock, ExclusiveLock, и т.п.granted(boolean) — статус блокировки: true если блокировка уже выдана, false если она ожидаетсяfastpath(boolean) — признак был ли использован специальный механизм для обхода основной lock table для "лёгких" блокировок