data_oldest_nonremovable horizon.
diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml<=
/div>
index 4a21bdb..5963ba1 100644
--- a/doc/src/sgml/maintenance.sgml
+++ b/doc/src/sgml/maintenance.sgml
@@ -165,6 +165,24 @@
space requirements. This is done by running <command=
>VACUUM</command>.
</para>
+ <note>
+ <para>
+ To decide which row versions can be removed,
+ <command>VACUUM</command> considers the oldest =
active transaction
+ ID (<firstterm>xmin</firstterm>) across backend=
s in the current
+ database. Because of this, a long-running transaction on on=
e table
+ can prevent <command>VACUUM</command> from recl=
aiming space
+ occupied by rows that are newer than that transaction in
+ <emphasis>any</emphasis> table in the same data=
base. For rows
+ older than the oldest active transaction,
+ <command>VACUUM</command> can still reclaim the=
m normally. Stale
+ replication slots and abandoned prepared transactions have =
the
+ same effect, since they also hold old xmin values that bloc=
k
+ cleanup. Note that for shared system catalogs, backends in =
all
+ databases are considered. For troubleshooting, see
+ <xref linkend=3D"vacuum-for-wraparound"/>.<=
/div>
+ </para>
+ </note>
+
<para>
The standard form of <command>VACUUM</command&=
gt; removes dead row
versions in tables and indexes and marks the space avai=
lable for
--
Best regards, =
span>
Zhilong Liu