@@ -618,13 +618,16 @@ HINT: Stop the postmaster and use a standalone backend to VACUUM in "mydb".
618
618
</indexterm>
619
619
620
620
<para>
621
- <firstterm>Multixacts</> are used to implement row locking by
622
- multiple transactions: since there is limited space in the tuple
623
- header to store lock information, that information is stored as a
624
- multixact separately in the <filename>pg_multixact</> subdirectory,
625
- and only its ID is in the <structfield>xmax</> field
626
- in the tuple header.
627
- Similar to transaction IDs, multixact IDs are implemented as a
621
+ <firstterm>Multixact IDs</> are used to support row locking by
622
+ multiple transactions. Since there is only limited space in a tuple
623
+ header to store lock information, that information is encoded as
624
+ a <quote>multiple transaction ID</>, or multixact ID for short,
625
+ whenever there is more than one transaction concurrently locking a
626
+ row. Information about which transaction IDs are included in any
627
+ particular multixact ID is stored separately in
628
+ the <filename>pg_multixact</> subdirectory, and only the multixact ID
629
+ appears in the <structfield>xmax</> field in the tuple header.
630
+ Like transaction IDs, multixact IDs are implemented as a
628
631
32-bit counter and corresponding storage, all of which requires
629
632
careful aging management, storage cleanup, and wraparound handling.
630
633
</para>
@@ -636,8 +639,8 @@ HINT: Stop the postmaster and use a standalone backend to VACUUM in "mydb".
636
639
is replaced by a different value, which can be the zero value, a single
637
640
transaction ID, or a newer multixact ID. For each table,
638
641
<structname>pg_class</>.<structfield>relminmxid</> stores the oldest
639
- possiblevalue stillstored in any tuple of that table. Every time this
640
- value is older than
642
+ possiblemultixact ID stillappearing in any tuple of that table.
643
+ If this value is older than
641
644
<xref linkend="guc-vacuum-multixact-freeze-table-age">, a whole-table
642
645
scan is forced. Whole-table <command>VACUUM</> scans, regardless of
643
646
what causes them, enable advancing the value for that table.