]> granicus.if.org Git - postgresql/commitdiff
Improve documentation about multixact IDs.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 17 Feb 2014 17:20:57 +0000 (12:20 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 17 Feb 2014 17:20:57 +0000 (12:20 -0500)
Per gripe from Josh Berkus.

doc/src/sgml/maintenance.sgml
doc/src/sgml/release-9.3.sgml

index 8ff309b78fe487bf9f50a5536ede44b85b10fc5e..d3fcb82ef751bc4a7994c5161f7f17725b4a2d5e 100644 (file)
@@ -616,13 +616,16 @@ HINT:  Stop the postmaster and vacuum that database in single-user mode.
     </indexterm>
 
     <para>
-     <firstterm>Multixacts</> are used to implement row locking by
-     multiple transactions: since there is limited space in the tuple
-     header to store lock information, that information is stored as a
-     multixact separately in the <filename>pg_multixact</> subdirectory,
-     and only its ID is in the <structfield>xmax</> field
-     in the tuple header.
-     Similar to transaction IDs, multixact IDs are implemented as a
+     <firstterm>Multixact IDs</> are used to support row locking by
+     multiple transactions.  Since there is only limited space in a tuple
+     header to store lock information, that information is encoded as
+     a <quote>multiple transaction ID</>, or multixact ID for short,
+     whenever there is more than one transaction concurrently locking a
+     row.  Information about which transaction IDs are included in any
+     particular multixact ID is stored separately in
+     the <filename>pg_multixact</> subdirectory, and only the multixact ID
+     appears in the <structfield>xmax</> field in the tuple header.
+     Like transaction IDs, multixact IDs are implemented as a
      32-bit counter and corresponding storage, all of which requires
      careful aging management, storage cleanup, and wraparound handling.
     </para>
@@ -634,8 +637,8 @@ HINT:  Stop the postmaster and vacuum that database in single-user mode.
      is replaced by a different value, which can be the zero value, a single
      transaction ID, or a newer multixact ID.  For each table,
      <structname>pg_class</>.<structfield>relminmxid</> stores the oldest
-     possible value still stored in any tuple of that table.  Every time this
-     value is older than
+     possible multixact ID still appearing in any tuple of that table.
+     If this value is older than
      <xref linkend="guc-vacuum-multixact-freeze-table-age">, a whole-table
      scan is forced.  Whole-table <command>VACUUM</> scans, regardless of
      what causes them, enable advancing the value for that table.
index acc0b9d2024a5bf5a9f0023c683e9ae49217b11e..11e429bb65d9f956be4da274c62f48c2ee51e407 100644 (file)
@@ -64,9 +64,11 @@ Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
      </para>
 
      <para>
-      The method for tuple freezing was unable to handle some cases
-      involving freezing of <quote>multixact</> IDs, with the practical
-      effect that shared row-level locks might be forgotten once old enough.
+      The logic for tuple freezing was unable to handle some cases involving
+      freezing of
+      <link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</>
+      IDs</link>, with the practical effect that shared row-level locks
+      might be forgotten once old enough.
      </para>
 
      <para>