74.2. Transactions and Locking
  The transaction IDs of currently executing transactions are shown in
  
   
    pg_locks
   
  
  in columns
  
   virtualxid
  
  and
  
   transactionid
  
  .  Read-only transactions
   will have
  
   virtualxid
  
  s but NULL
  
   transactionid
  
  s, while both columns will be
   set in read-write transactions.
 
  Some lock types wait on
  
   virtualxid
  
  ,
   while other types wait on
  
   transactionid
  
  .
   Row-level read and write locks are recorded directly in the locked
   rows and can be inspected using the
  
   pgrowlocks
  
  extension.  Row-level read locks might also require the assignment
   of multixact IDs (
  
   mxid
  
  ;  see
  
   Section 25.1.5.1
  
  ).