Home Explore Blog CI



postgresql

18th chunk of `doc/src/sgml/system-views.sgml`
723e1627cba50087ba0adb3a5ccc9005f8b3a70c1740554d0000000100000fa2
 <structname>pg_locks</structname> contains one row per active lockable
   object, requested lock mode, and relevant process.  Thus, the same
   lockable object might
   appear many times, if multiple processes are holding or waiting
   for locks on it.  However, an object that currently has no locks on it
   will not appear at all.
  </para>

  <para>
   There are several distinct types of lockable objects:
   whole relations (e.g., tables), individual pages of relations,
   individual tuples of relations,
   transaction IDs (both virtual and permanent IDs),
   and general database objects (identified by class OID and object OID,
   in the same way as in <link linkend="catalog-pg-description"><structname>pg_description</structname></link> or
   <link linkend="catalog-pg-depend"><structname>pg_depend</structname></link>).  Also, the right to extend a
   relation is represented as a separate lockable object, as is the right to
   update <structname>pg_database</structname>.<structfield>datfrozenxid</structfield>.
   Also, <quote>advisory</quote> locks can be taken on numbers that have
   user-defined meanings.
  </para>

  <table>
   <title><structname>pg_locks</structname> Columns</title>
   <tgroup cols="1">
    <thead>
     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       Column Type
      </para>
      <para>
       Description
      </para></entry>
     </row>
    </thead>

    <tbody>
     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>locktype</structfield> <type>text</type>
      </para>
      <para>
       Type of the lockable object:
       <literal>relation</literal>,
       <literal>extend</literal>,
       <literal>frozenid</literal>,
       <literal>page</literal>,
       <literal>tuple</literal>,
       <literal>transactionid</literal>,
       <literal>virtualxid</literal>,
       <literal>spectoken</literal>,
       <literal>object</literal>,
       <literal>userlock</literal>,
       <literal>advisory</literal>, or
       <literal>applytransaction</literal>.
       (See also <xref linkend="wait-event-lock-table"/>.)
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>database</structfield> <type>oid</type>
       (references <link linkend="catalog-pg-database"><structname>pg_database</structname></link>.<structfield>oid</structfield>)
      </para>
      <para>
       OID of the database in which the lock target exists, or
       zero if the target is a shared object, or
       null if the target is a transaction ID
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>relation</structfield> <type>oid</type>
       (references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
      </para>
      <para>
       OID of the relation targeted by the lock, or null if the target is not
       a relation or part of a relation
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>page</structfield> <type>int4</type>
      </para>
      <para>
       Page number targeted by the lock within the relation,
       or null if the target is not a relation page or tuple
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>tuple</structfield> <type>int2</type>
      </para>
      <para>
       Tuple number targeted by the lock within the page,
       or null if the target is not a tuple
      </para></entry>
     </row>

     <row>
      <entry role="catalog_table_entry"><para role="column_definition">
       <structfield>virtualxid</structfield> <type>text</type>
      </para>
      <para>
       Virtual ID of the transaction targeted by the lock,
       or

Title: pg_locks View
Summary
The pg_locks view provides information about the locks held by active processes within the database server. It contains one row per active lockable object, requested lock mode, and relevant process. The view includes columns such as lock type, database, relation, page, tuple, and virtual transaction ID, which provide details about the lockable object and the lock being held. The lockable objects can be relations, pages, tuples, transaction IDs, or general database objects, and the view also includes advisory locks that can be taken on user-defined numbers.