aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/logical-replication.sgml17
-rw-r--r--doc/src/sgml/monitoring.sgml77
2 files changed, 84 insertions, 10 deletions
diff --git a/doc/src/sgml/logical-replication.sgml b/doc/src/sgml/logical-replication.sgml
index 46917f9f94f..df62eb45ff8 100644
--- a/doc/src/sgml/logical-replication.sgml
+++ b/doc/src/sgml/logical-replication.sgml
@@ -1582,10 +1582,11 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
</para>
<para>
- Additional logging is triggered in the following <firstterm>conflict</firstterm>
- cases:
+ Additional logging is triggered, and the conflict statistics are collected (displayed in the
+ <link linkend="monitoring-pg-stat-subscription-stats"><structname>pg_stat_subscription_stats</structname></link> view)
+ in the following <firstterm>conflict</firstterm> cases:
<variablelist>
- <varlistentry>
+ <varlistentry id="conflict-insert-exists" xreflabel="insert_exists">
<term><literal>insert_exists</literal></term>
<listitem>
<para>
@@ -1598,7 +1599,7 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
</para>
</listitem>
</varlistentry>
- <varlistentry>
+ <varlistentry id="conflict-update-origin-differs" xreflabel="update_origin_differs">
<term><literal>update_origin_differs</literal></term>
<listitem>
<para>
@@ -1610,7 +1611,7 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
</para>
</listitem>
</varlistentry>
- <varlistentry>
+ <varlistentry id="conflict-update-exists" xreflabel="update_exists">
<term><literal>update_exists</literal></term>
<listitem>
<para>
@@ -1627,7 +1628,7 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
</para>
</listitem>
</varlistentry>
- <varlistentry>
+ <varlistentry id="conflict-update-missing" xreflabel="update_missing">
<term><literal>update_missing</literal></term>
<listitem>
<para>
@@ -1636,7 +1637,7 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
</para>
</listitem>
</varlistentry>
- <varlistentry>
+ <varlistentry id="conflict-delete-origin-differs" xreflabel="delete_origin_differs">
<term><literal>delete_origin_differs</literal></term>
<listitem>
<para>
@@ -1648,7 +1649,7 @@ test_sub=# SELECT * FROM t1 ORDER BY id;
</para>
</listitem>
</varlistentry>
- <varlistentry>
+ <varlistentry id="conflict-delete-missing" xreflabel="delete_missing">
<term><literal>delete_missing</literal></term>
<listitem>
<para>
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 55417a6fa9d..933de6fe07f 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -507,7 +507,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<row>
<entry><structname>pg_stat_subscription_stats</structname><indexterm><primary>pg_stat_subscription_stats</primary></indexterm></entry>
- <entry>One row per subscription, showing statistics about errors.
+ <entry>One row per subscription, showing statistics about errors and conflicts.
See <link linkend="monitoring-pg-stat-subscription-stats">
<structname>pg_stat_subscription_stats</structname></link> for details.
</entry>
@@ -2157,7 +2157,10 @@ description | Waiting for a newly initialized WAL file to reach durable storage
<structfield>apply_error_count</structfield> <type>bigint</type>
</para>
<para>
- Number of times an error occurred while applying changes
+ Number of times an error occurred while applying changes. Note that any
+ conflict resulting in an apply error will be counted in both
+ <literal>apply_error_count</literal> and the corresponding conflict
+ count (e.g., <literal>confl_*</literal>).
</para></entry>
</row>
@@ -2173,6 +2176,76 @@ description | Waiting for a newly initialized WAL file to reach durable storage
<row>
<entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>confl_insert_exists</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of times a row insertion violated a
+ <literal>NOT DEFERRABLE</literal> unique constraint during the
+ application of changes. See <xref linkend="conflict-insert-exists"/>
+ for details about this conflict.
+ </para></entry>
+ </row>
+
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>confl_update_origin_differs</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of times an update was applied to a row that had been previously
+ modified by another source during the application of changes. See
+ <xref linkend="conflict-update-origin-differs"/> for details about this
+ conflict.
+ </para></entry>
+ </row>
+
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>confl_update_exists</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of times that an updated row value violated a
+ <literal>NOT DEFERRABLE</literal> unique constraint during the
+ application of changes. See <xref linkend="conflict-update-exists"/>
+ for details about this conflict.
+ </para></entry>
+ </row>
+
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>confl_update_missing</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of times the tuple to be updated was not found during the
+ application of changes. See <xref linkend="conflict-update-missing"/>
+ for details about this conflict.
+ </para></entry>
+ </row>
+
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>confl_delete_origin_differs</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of times a delete operation was applied to row that had been
+ previously modified by another source during the application of changes.
+ See <xref linkend="conflict-delete-origin-differs"/> for details about
+ this conflict.
+ </para></entry>
+ </row>
+
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>confl_delete_missing</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of times the tuple to be deleted was not found during the application
+ of changes. See <xref linkend="conflict-delete-missing"/> for details
+ about this conflict.
+ </para></entry>
+ </row>
+
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
<structfield>stats_reset</structfield> <type>timestamp with time zone</type>
</para>
<para>