Search code examples
relational-databasepostgresql-9.2database-administration

PostgreSQL find locks including the table name


I'm trying to take a look at locks that are happening on specific tables in my PostgreSQL database.

I see there's a table called pg_locks

select * from pg_locks;

Which seems to give me a bunch of columns but is it possible to find the relation because I see one of the columns is the relation oid.

What table must I link that to to get the relation name?


Solution

  • Try this :

    select nspname,relname,l.* from pg_locks l join pg_class c on 
     (relation=c.oid) join pg_namespace nsp on (c.relnamespace=nsp.oid) where 
      pid in (select procpid from pg_stat_activity where 
      datname=current_database() and current_query!=current_query())