mirror of
https://github.com/postgres/postgres.git
synced 2025-12-21 05:21:08 +03:00
Collect statistics about conflicts in logical replication.
This commit adds columns in view pg_stat_subscription_stats to show the
number of times a particular conflict type has occurred during the
application of logical replication changes. The following columns are
added:
confl_insert_exists:
Number of times a row insertion violated a NOT DEFERRABLE unique
constraint.
confl_update_origin_differs:
Number of times an update was performed on a row that was
previously modified by another origin.
confl_update_exists:
Number of times that the updated value of a row violates a
NOT DEFERRABLE unique constraint.
confl_update_missing:
Number of times that the tuple to be updated is missing.
confl_delete_origin_differs:
Number of times a delete was performed on a row that was
previously modified by another origin.
confl_delete_missing:
Number of times that the tuple to be deleted is missing.
The update_origin_differs and delete_origin_differs conflicts can be
detected only when track_commit_timestamp is enabled.
Author: Hou Zhijie
Reviewed-by: Shveta Malik, Peter Smith, Anit Kapila
Discussion: https://postgr.es/m/OS0PR01MB57160A07BD575773045FC214948F2@OS0PR01MB5716.jpnprd01.prod.outlook.com
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user