systemadmin.es > DBA > PostgreSQL: Mostrar locks por tipo y base de datos

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:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>