Skip to content

Commit e7f4097

Browse files
committed
Improve documentation about multixact IDs.
Per gripe from Josh Berkus.
1 parent 6ef3254 commit e7f4097

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

doc/src/sgml/maintenance.sgml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -616,13 +616,16 @@ HINT: Stop the postmaster and vacuum that database in single-user mode.
616616
</indexterm>
617617

618618
<para>
619-
<firstterm>Multixacts</> are used to implement row locking by
620-
multiple transactions: since there is limited space in the tuple
621-
header to store lock information, that information is stored as a
622-
multixact separately in the <filename>pg_multixact</> subdirectory,
623-
and only its ID is in the <structfield>xmax</> field
624-
in the tuple header.
625-
Similar to transaction IDs, multixact IDs are implemented as a
619+
<firstterm>Multixact IDs</> are used to support row locking by
620+
multiple transactions. Since there is only limited space in a tuple
621+
header to store lock information, that information is encoded as
622+
a <quote>multiple transaction ID</>, or multixact ID for short,
623+
whenever there is more than one transaction concurrently locking a
624+
row. Information about which transaction IDs are included in any
625+
particular multixact ID is stored separately in
626+
the <filename>pg_multixact</> subdirectory, and only the multixact ID
627+
appears in the <structfield>xmax</> field in the tuple header.
628+
Like transaction IDs, multixact IDs are implemented as a
626629
32-bit counter and corresponding storage, all of which requires
627630
careful aging management, storage cleanup, and wraparound handling.
628631
</para>
@@ -634,8 +637,8 @@ HINT: Stop the postmaster and vacuum that database in single-user mode.
634637
is replaced by a different value, which can be the zero value, a single
635638
transaction ID, or a newer multixact ID. For each table,
636639
<structname>pg_class</>.<structfield>relminmxid</> stores the oldest
637-
possible value still stored in any tuple of that table. Every time this
638-
value is older than
640+
possible multixact ID still appearing in any tuple of that table.
641+
If this value is older than
639642
<xref linkend="guc-vacuum-multixact-freeze-table-age">, a whole-table
640643
scan is forced. Whole-table <command>VACUUM</> scans, regardless of
641644
what causes them, enable advancing the value for that table.

doc/src/sgml/release-9.3.sgml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,11 @@ Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
6464
</para>
6565

6666
<para>
67-
The method for tuple freezing was unable to handle some cases
68-
involving freezing of <quote>multixact</> IDs, with the practical
69-
effect that shared row-level locks might be forgotten once old enough.
67+
The logic for tuple freezing was unable to handle some cases involving
68+
freezing of
69+
<link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</>
70+
IDs</link>, with the practical effect that shared row-level locks
71+
might be forgotten once old enough.
7072
</para>
7173

7274
<para>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy