28.7. ÐонÑликÑÑ #
ÐогиÑеÑÐºÐ°Ñ ÑепликаÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾ обÑÑнÑм опеÑаÑиÑм DML в Ñом ÑмÑÑле, ÑÑо даннÑе изменÑÑÑÑÑ Ð´Ð°Ð¶Ðµ пÑи локалÑнÑÑ
изменениÑÑ
на ÑÑоÑоне подпиÑÑика. ÐÑли вÑ
одÑÑие даннÑе наÑÑÑаÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо огÑаниÑениÑ, ÑепликаÑÐ¸Ñ Ð¾ÑÑанавливаеÑÑÑ. ÐÑа ÑиÑÑаÑÐ¸Ñ Ð½Ð°Ð·ÑваеÑÑÑ ÐºÐ¾Ð½ÑликÑом. ÐÑи ÑепликаÑии опеÑаÑии UPDATE или DELETE оÑÑÑÑÑÑвие даннÑÑ
Ñакже ÑÑиÑаеÑÑÑ ÐºÐ¾Ð½ÑликÑом, но не пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº оÑибке, и Ñакие опеÑаÑии пÑоÑÑо пÑопÑÑкаÑÑÑÑ.
СÑабаÑÑÐ²Ð°ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑное пÑоÑоколиÑование и ÑобиÑаеÑÑÑ ÑÑаÑиÑÑика по конÑликÑÑ (оÑобÑажаеÑÑÑ Ð² пÑедÑÑавлении pg_stat_subscription_stats) в ÑледÑÑÑиÑ
ÑлÑÑаÑÑ
Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑликÑа:
insert_exists#ÐÑÑавка ÑÑÑоки, коÑоÑÐ°Ñ Ð½Ð°ÑÑÑÐ°ÐµÑ Ð¾Ð³ÑаниÑение ÑникалÑноÑÑи
NOT DEFERRABLE. ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ Ð¿ÑоÑоколиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии об иÑÑоÑнике и вÑемени ÑикÑаÑии конÑликÑÑÑÑего клÑÑа на подпиÑÑике Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вклÑÑиÑÑ Ð¿Ð°ÑамеÑÑtrack_commit_timestamp. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð¾ÑобÑажаÑÑÑÑ Ð¾Ñибка, пока конÑÐ»Ð¸ÐºÑ Ð½Ðµ ÑазÑеÑиÑÑ Ð²ÑÑÑнÑÑ.update_origin_differs#Ðзменение ÑÑÑоки, Ñанее изменÑнной дÑÑгим иÑÑоÑником. ÐбÑаÑиÑе внимание, ÑÑо Ñакой конÑÐ»Ð¸ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ обнаÑÑжиÑÑ, ÑолÑко еÑли на подпиÑÑике вклÑÑÑн паÑамеÑÑ
track_commit_timestamp. Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ пÑименÑеÑÑÑ Ð²Ñегда вне завиÑимоÑÑи Ð¾Ñ Ð¸ÑÑоÑника локалÑной ÑÑÑоки.update_exists#ÐзменÑнное знаÑение ÑÑÑоки наÑÑÑÐ°ÐµÑ Ð¾Ð³ÑаниÑение ÑникалÑноÑÑи
NOT DEFERRABLE. ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ Ð¿ÑоÑоколиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии об иÑÑоÑнике и вÑемени ÑикÑаÑии конÑликÑÑÑÑего клÑÑа на подпиÑÑике Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вклÑÑиÑÑ Ð¿Ð°ÑамеÑÑtrack_commit_timestamp. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð¾ÑобÑажаÑÑÑÑ Ð¾Ñибка, пока конÑÐ»Ð¸ÐºÑ Ð½Ðµ ÑазÑеÑиÑÑ Ð²ÑÑÑнÑÑ. ÐбÑаÑиÑе внимание, ÑÑо пÑи изменении ÑекÑиониÑованной ÑаблиÑÑ, еÑли изменÑнное знаÑение ÑÑÑоки ÑдовлеÑвоÑÑÐµÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð´ÑÑгой ÑекÑии, ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº вÑÑавке ÑÑÑоки в новÑÑ ÑекÑиÑ, Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ ÐºÐ¾Ð½ÑликÑinsert_existsпÑи ÑÑловии, ÑÑо Ð½Ð¾Ð²Ð°Ñ ÑÑÑока наÑÑÑÐ°ÐµÑ Ð¾Ð³ÑаниÑение ÑникалÑноÑÑиNOT DEFERRABLE.update_missing#ÐоÑÑеж, коÑоÑÑй Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ измениÑÑ, не найден. Ðзменение в ÑÑом ÑлÑÑае пÑопÑÑкаеÑÑÑ.
delete_origin_differs#Удаление ÑÑÑоки, Ñанее изменÑнной дÑÑгим иÑÑоÑником. ÐбÑаÑиÑе внимание, ÑÑо Ñакой конÑÐ»Ð¸ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ обнаÑÑжиÑÑ, ÑолÑко еÑли на подпиÑÑике вклÑÑÑн паÑамеÑÑ
track_commit_timestamp. Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñдаление пÑименÑеÑÑÑ Ð²Ñегда вне завиÑимоÑÑи Ð¾Ñ Ð¸ÑÑоÑника локалÑной ÑÑÑоки.delete_missing#ÐоÑÑеж, коÑоÑÑй Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑдалиÑÑ, не найден. Удаление в ÑÑом ÑлÑÑае пÑопÑÑкаеÑÑÑ.
multiple_unique_conflicts#ÐÑÑавка или изменение ÑÑÑоки, коÑоÑÑе наÑÑÑаÑÑ Ð½ÐµÑколÑко огÑаниÑений ÑникалÑноÑÑи
NOT DEFERRABLE. ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ Ð¿ÑоÑоколиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½ÑоÑмаÑии об иÑÑоÑнике и вÑемени ÑикÑаÑии конÑликÑÑÑÑÐ¸Ñ ÐºÐ»ÑÑей на подпиÑÑике Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вклÑÑиÑÑ Ð¿Ð°ÑамеÑÑtrack_commit_timestamp. Ð ÑÑом ÑлÑÑае бÑÐ´ÐµÑ Ð¾ÑобÑажаÑÑÑÑ Ð¾Ñибка, пока конÑÐ»Ð¸ÐºÑ Ð½Ðµ ÑазÑеÑиÑÑ Ð²ÑÑÑнÑÑ.
ÐбÑаÑиÑе внимание, ÑÑо ÑÑÑеÑÑвÑÑÑ Ð´ÑÑгие ÑÑенаÑии конÑликÑов, напÑÐ¸Ð¼ÐµÑ Ð½Ð°ÑÑÑение огÑаниÑений-иÑклÑÑений. Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð´Ñобной инÑоÑмаÑии о Ð½Ð¸Ñ Ð² жÑÑнале не пÑедоÑÑавлÑеÑÑÑ.
ФоÑÐ¼Ð°Ñ Ð¶ÑÑнала Ð´Ð»Ñ ÐºÐ¾Ð½ÑликÑов логиÑеÑкой ÑепликаÑии вÑглÑÐ´Ð¸Ñ Ñак:
LOG: conflict detected on relation "имÑ_ÑÑ ÐµÐ¼Ñ.имÑ_ÑаблиÑÑ": conflict=Ñипа_конÑликÑаDETAIL:деÑалÑнаÑ_инÑоÑмаÑиÑ. {инÑоÑмаÑиÑ_о_знаÑениÑÑ[; ... ]}. гдеинÑоÑмаÑиÑ_о_знаÑениÑÑÑвлÑеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ÑледÑÑÑего:Key(имÑ_ÑÑолбÑа[, ...])=(знаÑение_ÑÑолбÑа[, ...])existing local row[(имÑ_ÑÑолбÑа[, ...])=](знаÑение_ÑÑолбÑа[, ...])remote row[(>имÑ_ÑÑолбÑа[, ...])=](знаÑение_ÑÑолбÑа[, ...])replica identity{(>имÑ_ÑÑолбÑа[, ...])=(знаÑение_ÑÑолбÑа[, ...]) | full [(c>имÑ_ÑÑолбÑа[, ...])=](знаÑение_ÑÑолбÑа[, ...])}
РжÑÑнале пÑедÑÑавлена ÑледÑÑÑÐ°Ñ Ð¸Ð½ÑоÑмаÑиÑ:
LOGимÑ_ÑÑ ÐµÐ¼Ñ.имÑ_ÑаблиÑÑÑказÑÐ²Ð°ÐµÑ Ð½Ð° локалÑное конÑликÑÑÑÑее оÑноÑение.Ñип_конÑликÑаâ Ñип пÑоизоÑедÑего конÑликÑа (напÑимеÑ,insert_exists,update_exists).
DETAILподÑобнаÑ_инÑоÑмаÑиÑпоказÑÐ²Ð°ÐµÑ Ð¸ÑÑоÑник, иденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии и вÑÐµÐ¼Ñ ÑикÑаÑии ÑÑанзакÑии (пÑи налиÑии), коÑоÑÐ°Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð° ÑÑÑеÑÑвÑÑÑÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ ÑÑÑокÑ.Раздел
KeyпоказÑÐ²Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÐºÐ»ÑÑей локалÑнÑÑ ÑÑÑок, коÑоÑÑе наÑÑÑаÑÑ Ð¾Ð³ÑаниÑение ÑникалÑноÑÑи Ð´Ð»Ñ ÐºÐ¾Ð½ÑликÑовinsert_exists,update_existsилиmultiple_unique_conflicts.Раздел
existing local rowпоказÑваеÑ, ÐºÐ°ÐºÐ°Ñ Ð»Ð¾ÐºÐ°Ð»ÑÐ½Ð°Ñ ÑÑÑока вÑзвала конÑликÑupdate_origin_differsилиdelete_origin_differs, еÑли ÐµÑ Ð¸ÑÑоÑник оÑлиÑаеÑÑÑ Ð¾Ñ ÑдалÑнной ÑÑÑоки, или конÑликÑinsert_exists,update_existsилиmultiple_unique_conflicts, еÑли знаÑение клÑÑа конÑликÑÑÐµÑ Ñ ÑдалÑнной ÑÑÑокой.Раздел
remote rowпоказÑваеÑ, ÐºÐ°ÐºÐ°Ñ Ð½Ð¾Ð²Ð°Ñ ÑÑÑока из ÑдалÑнной опеÑаÑии вÑÑавки или Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñзвала конÑликÑ. ÐбÑаÑиÑе внимание, ÑÑо Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑий Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñение ÑÑолбÑа новой ÑÑÑоки бÑдеÑNULL, еÑли оно не изменилоÑÑ Ð¸ Ð¸Ð¼ÐµÐµÑ ÑоÑÐ¼Ð°Ñ TOAST.Раздел
replica identityпоказÑÐ²Ð°ÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÐºÐ»ÑÑа ÑепликаÑионного иденÑиÑикаÑоÑа, коÑоÑÑе иÑполÑзовалиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка ÑÑÑеÑÑвÑÑÑей локалÑной ÑÑÑоки, подлежаÑей Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑдалениÑ. ÐдеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑобÑажаÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ðµ знаÑение ÑÑÑоки, еÑли локалÑное оÑноÑение оÑмеÑено Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑREPLICA IDENTITY FULL.имÑ_ÑÑолбÑаâ ÑÑо Ð¸Ð¼Ñ ÑÑолбÑа. ÐÐ»Ñ Ñазделовexisting local row,remote rowиreplica identity fullимена ÑÑолбÑов пÑоÑоколиÑÑÑÑÑÑ, ÑолÑко еÑли Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ Ñ Ð²Ð°ÑÐ°ÐµÑ Ð¿Ñав доÑÑÑпа ко вÑем ÑÑолбÑам ÑаблиÑÑ. Ðмена ÑÑолбÑов (пÑи налиÑии) пеÑеÑиÑлÑÑÑÑÑ Ð² Ñом же поÑÑдке, ÑÑо и ÑооÑвеÑÑÑвÑÑÑие им знаÑениÑ.знаÑение_ÑÑолбÑаâ ÑÑо знаÑение ÑÑолбÑа. ÐолÑÑие знаÑÐµÐ½Ð¸Ñ ÑÑекаÑÑÑÑ Ð´Ð¾ 64 байÑов.ÐбÑаÑиÑе внимание, ÑÑо в ÑлÑÑае конÑликÑа
multiple_unique_conflictsÑоÑмиÑÑÑÑÑÑ ÑÑÑокиподÑобнаÑ_инÑоÑмаÑиÑиинÑоÑмаÑиÑ_о_знаÑениÑÑ, ÐºÐ°Ð¶Ð´Ð°Ñ Ð¸Ð· коÑоÑÑÑ Ð²ÑÐ²Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð´ÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ конкÑеÑном огÑаниÑении ÑникалÑноÑÑи.
ÐпеÑаÑии логиÑеÑкой ÑепликаÑии вÑполнÑÑÑÑÑ Ñ Ð¿Ñавами Ñоли, коÑоÑой пÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñка. ÐоÑÑÐ¾Ð¼Ñ Ð¿Ñи оÑÑÑÑÑÑвии необÑ
одимÑÑ
пÑав доÑÑÑпа к ÑелевÑм ÑаблиÑам возникнÑÑ ÐºÐ¾Ð½ÑликÑÑ ÑепликаÑии, как и пÑи вклÑÑÑнной Ð´Ð»Ñ ÑелевÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð·Ð°ÑиÑе на ÑÑовне ÑÑÑок, огÑаниÑиваÑÑей владелÑÑа подпиÑки. ÐÑи ÑÑом не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ, ÑÑÑеÑÑвÑÐµÑ Ð»Ð¸ полиÑика, коÑоÑÐ°Ñ Ð±Ñ Ð·Ð°Ð¿ÑеÑала ÑеплиÑиÑÑемÑе опеÑаÑии INSERT, UPDATE, DELETE или TRUNCATE. ÐгÑаниÑение, ÑвÑзанное Ñ Ð·Ð°ÑиÑой на ÑÑовне ÑÑÑок, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑбÑано в ÑледÑÑÑиÑ
веÑÑиÑÑ
Postgres Pro.
ÐÑли в ÑлÑÑае конÑликÑа вÑдаÑÑÑÑ Ð¾Ñибка, ÑепликаÑÐ¸Ñ Ð¾ÑÑанавливаеÑÑÑ. РазÑеÑиÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÑÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ вÑÑÑнÑÑ. ÐодÑобноÑÑи конÑликÑа можно найÑи в жÑÑнале ÑеÑвеÑа-подпиÑÑика.
РазÑеÑиÑÑ ÐºÐ¾Ð½ÑÐ»Ð¸ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾, изменив даннÑе или ÑазÑеÑÐµÐ½Ð¸Ñ Ð½Ð° ÑÑоÑоне подпиÑÑика, ÑÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ не конÑликÑовали Ñ Ð¿Ð¾ÑÑÑпаÑÑими изменениÑми, или пÑопÑÑÑив ÑÑанзакÑиÑ, конÑликÑÑÑÑÑÑ Ñ ÑÑÑеÑÑвÑÑÑими даннÑми. Ðогда в ÑлÑÑае конÑликÑа вÑдаÑÑÑÑ Ð¾Ñибка, ÑепликаÑÐ¸Ñ Ð¾ÑÑанавливаеÑÑÑ, а ÑабоÑий пÑоÑеÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑии вÑÐ²Ð¾Ð´Ð¸Ñ Ð² жÑÑнал ÑеÑвеÑа подпиÑÑика ÑообÑение ÑледÑÑÑего вида:
ERROR: conflict detected on relation "public.test": conflict=insert_exists DETAIL: Key already exists in unique index "t_pkey", which was modified locally in transaction 740 at 2024-06-26 10:47:04.727375+08. Key (c)=(1); existing local row (1, 'local'); remote row (1, 'remote'). CONTEXT: processing remote data for replication origin "pg_16395" during "INSERT" for replication target relation "public.test" in transaction 725 finished at 0/14C0378
Ð ÑÑом ÑообÑении можно ÑвидеÑÑ LSN ÑÑанзакÑии, ÑодеÑжаÑей изменение, коÑоÑое наÑÑÑÐ°ÐµÑ Ð¾Ð³ÑаниÑение, и Ð¸Ð¼Ñ Ð¸ÑÑоÑника даннÑÑ
ÑепликаÑии (в данном ÑлÑÑае LSN 0/14C0378 и pg_16395, ÑооÑвеÑÑÑвенно). ТÑанзакÑиÑ, вÑзвавÑÑÑ ÐºÐ¾Ð½ÑликÑ, можно пÑопÑÑÑиÑÑ, вÑполнив ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ALTER SUBSCRIPTION ... SKIP Ñ LSN ÐµÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ (Ñо еÑÑÑ LSN 0/14C0378). РкаÑеÑÑве LSN завеÑÑÐµÐ½Ð¸Ñ ÑÑанзакÑии Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ LSN, Ñ ÐºÐ¾ÑоÑÑм ÑÑанзакÑÐ¸Ñ Ð±Ñла заÑикÑиÑована или подгоÑовлена на ÑеÑвеÑе пÑбликаÑии. ÐонÑликÑÑÑÑÑÑ ÑÑанзакÑÐ¸Ñ Ñакже можно пÑопÑÑÑиÑÑ, вÑзвав ÑÑнкÑÐ¸Ñ pg_replication_origin_advance(). ÐÑежде Ñем вÑзÑваÑÑ ÑÑÑ ÑÑнкÑиÑ, нÑжно либо вÑеменно оÑклÑÑиÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑкÑ, вÑполнив ALTER SUBSCRIPTION ... DISABLE, либо иÑполÑзоваÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑÐºÑ Ñ Ð¿Ð°ÑамеÑÑом disable_on_error. ÐаÑем можно вÑзваÑÑ ÑÑнкÑÐ¸Ñ pg_replication_origin_advance(), пеÑедав ей node_name (Ñо еÑÑÑ pg_16395) и LSN, ÑледÑÑÑий за LSN завеÑÑÐµÐ½Ð¸Ñ (Ñо еÑÑÑ 0/14C0379). ТекÑÑие позиÑии иÑÑоÑников ÑепликаÑии можно ÑвидеÑÑ Ð² ÑиÑÑемном пÑедÑÑавлении pg_replication_origin_status. ÐбÑаÑиÑе внимание: когда пÑопÑÑкаеÑÑÑ Ð²ÑÑ ÑÑанзакÑиÑ, пÑопÑÑкаÑÑÑÑ Ð²Ñе ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, в Ñом ÑиÑле не наÑÑÑаÑÑие никакиÑ
огÑаниÑений. Ð ÑезÑлÑÑаÑе ÑоÑÑоÑние подпиÑÑика легко Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÑоглаÑованнÑм. ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¿Ð¾ конÑликÑÑÑÑим ÑÑÑокам, напÑÐ¸Ð¼ÐµÑ Ð¸Ñ
иÑÑоÑник и вÑÐµÐ¼Ñ ÑикÑаÑии, пÑедÑÑавлена в ÑÑÑоке жÑÑнала DETAIL. Ðна доÑÑÑпна, ÑолÑко еÑли подпиÑÑике вклÑÑÑн паÑамеÑÑ track_commit_timestamp. Ðа оÑнове ÑÑой инÑоÑмаÑии полÑзоваÑели могÑÑ ÑеÑиÑÑ, оÑÑавиÑÑ Ð»Ð¾ÐºÐ°Ð»Ñное или пÑимениÑÑ ÑдалÑнное изменение. ÐапÑимеÑ, вÑÑеÑÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÑÑÑока DETAIL в жÑÑнале ÑказÑÐ²Ð°ÐµÑ Ð½Ð° Ñо, ÑÑо ÑÑÑеÑÑвÑÑÑÐ°Ñ ÑÑÑока бÑла изменена локалÑно. ÐÑимениÑÑ ÑдалÑнное изменение полÑзоваÑели могÑÑ Ð²ÑÑÑнÑÑ.
ÐÑли Ð´Ð»Ñ streaming ÑÑÑановлен Ñежим parallel, LSN завеÑÑÐµÐ½Ð¸Ñ Ð½ÐµÑдаÑнÑÑ
ÑÑанзакÑий Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ ÑегиÑÑÑиÑоваÑÑÑÑ. Ð ÑÑом ÑлÑÑае Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð²ÐºÐ»ÑÑиÑÑ Ð¸Ð»Ð¸ оÑклÑÑиÑÑ Ñежим поÑоковой пеÑедаÑи (измениÑÑ Ð·Ð½Ð°Ñение на on или off) и Ñнова вÑзваÑÑ Ñе же конÑликÑÑ, ÑÑÐ¾Ð±Ñ LSN завеÑÑÐµÐ½Ð¸Ñ Ð½ÐµÑдаÑной ÑÑанзакÑии бÑл запиÑан в жÑÑнал ÑеÑвеÑа. ÐодÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± иÑполÑзовании LSN завеÑÑÐµÐ½Ð¸Ñ Ð½Ð°Ñ
одиÑÑÑ Ð² опиÑании ALTER SUBSCRIPTION... SKIP.