•
PostgreSQL: Mostrar locks por tipo y base de datos
En postgres, para ver los bloqueos que tenemos por base de datos, deberemos consultar la tabla pg_locks
Mediante la siguiente query podremos obtener el total de locks de cada tipo para cada base de datos:
SELECT count(granted),mode,datname as database FROM pg_locks l JOIN pg_database d ON (d.oid=l.database) GROUP BY mode,datname;
Un ejemplo de ejecución sería:
postgres=# SELECT count(granted),mode,datname as database FROM pg_locks l JOIN pg_database d ON (d.oid=l.database) GROUP BY mode,datname; count | mode | database -------+-----------------+---------- 1 | AccessShareLock | postgres 66 | AccessShareLock | ejemplo (2 rows)
Los locks que nos podemos encontrar son los siguientes:
- AccessShareLock: La tabla esta con un bloqueo compartido para lectura: Varias queries pueden leer de la tabla, pero no permite que se pueda escribir en ella.
- RowShareLock: Únicamente una fila tiene un bloqueo compartido de lectura
- RowExclusiveLock: La fila esta bloqueada para escritura (INSERT, UPDATE, DELETE), por lo que no se puede ni leer ni escribir en ella
- ExclusiveLock: Lo mismo que RowExclusiveLock a nivel de tabla
Deja un comentario: