48.8. ÐоддеÑжка ÑÐ¸Ð½Ñ Ñонной ÑепликаÑии Ð´Ð»Ñ Ð»Ð¾Ð³Ð¸ÑеÑкого декодиÑованиÑ
48.8.1. ÐбзоÑ
ÐогиÑеÑкое декодиÑование Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑеализаÑии ÑинÑ
Ñонной ÑепликаÑии Ñ Ñем же внеÑним инÑеÑÑейÑом, ÑÑо и ÑинÑ
ÑÐ¾Ð½Ð½Ð°Ñ ÑепликаÑÐ¸Ñ Ð¿Ð¾Ð²ÐµÑÑ
поÑоковой ÑепликаÑии. ÐÐ»Ñ ÑÑого поÑÐ¾ÐºÐ¾Ð²Ð°Ñ Ð¿ÐµÑедаÑа даннÑÑ
должна пÑоиÑÑ
одиÑÑ ÑеÑез инÑеÑÑÐµÐ¹Ñ Ð¿Ð¾Ñоковой ÑепликаÑии (Ñм. Раздел 48.3). ÐлиенÑÑ Ñакой ÑепликаÑии Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾ÑÑлаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ðбновление ÑоÑÑоÑÐ½Ð¸Ñ ÑезеÑвного ÑеÑвеÑа (F) (Ñм. Раздел 52.4), как и клиенÑÑ Ð¿Ð¾Ñоковой ÑепликаÑии.
ÐÑимеÑание
СинÑ
ÑÐ¾Ð½Ð½Ð°Ñ Ñеплика, полÑÑаÑÑÐ°Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑеÑез логиÑеÑкое декодиÑование, бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð² ÑамкаÑ
одной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. Так как synchronous_standby_names в наÑÑоÑÑее вÑемÑ, напÑоÑив, ÑÑÑанавливаеÑÑÑ Ð½Ð° ÑÑовне ÑеÑвеÑа, ÑÑо ознаÑаеÑ, ÑÑо ÑÑÐ¾Ñ Ð¿Ð¾Ð´Ñ
од не бÑÐ´ÐµÑ ÑабоÑаÑÑ ÐºÐ¾ÑÑекÑно пÑи иÑполÑзовании неÑколÑкиÑ
баз даннÑÑ
.
48.8.2. ÐгÑаниÑениÑ
Ð ÑÑ ÐµÐ¼Ðµ Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой ÑепликаÑией возможна взаимоблокиÑовка, еÑли ÑÑанзакÑÐ¸Ñ Ð² иÑклÑÑиÑелÑном Ñежиме заблокиÑÑÐµÑ ÑаблиÑÑ ÐºÐ°Ñалога (в Ñом ÑиÑле полÑзоваÑелÑÑкие). ÐолÑзоваÑелÑÑкие ÑаблиÑÑ ÐºÐ°Ñалога опиÑÐ°Ð½Ñ Ð² ÐодÑазделе 48.6.2. ÐÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ, поÑÐ¾Ð¼Ñ ÑÑо в пÑоÑеÑÑе логиÑеÑкого декодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑанзакÑий пÑи обÑаÑении к ÑаблиÑам каÑалога они блокиÑÑÑÑÑÑ. Ðо избежание ÑÑого полÑзоваÑели Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ð¾Ð·Ð´ÐµÑживаÑÑÑÑ Ð¾Ñ Ð¸ÑклÑÑиÑелÑной блокиÑовки ÑÐ°Ð±Ð»Ð¸Ñ ÐºÐ°Ñалога (в Ñом ÑиÑле полÑзоваÑелÑÑÐºÐ¸Ñ ). ÐÑзваÑÑ ÑакÑÑ Ð±Ð»Ð¾ÐºÐ¸ÑÐ¾Ð²ÐºÑ Ð¼Ð¾Ð³ÑÑ ÑледÑÑÑие обÑÑоÑÑелÑÑÑва:
УÑÑановление Ñвной блокиÑовки (командой
LOCK) Ð´Ð»Ñ ÐºÐ°Ñалогаpg_classв ÑÑанзакÑии.ÐÑполнение
CLUSTERÐ´Ð»Ñ ÐºÐ°Ñалогаpg_classв ÑÑанзакÑии.ÐÑполнение
PREPARE TRANSACTIONпоÑле командÑLOCK, блокиÑÑÑÑейpg_class, пÑи ÑабоÑаÑÑем логиÑеÑком декодиÑовании двÑÑ ÑазнÑÑ ÑÑанзакÑий.ÐÑполнение
PREPARE TRANSACTIONпоÑле командÑCLUSTERдлÑpg_triggerпÑи ÑабоÑаÑÑем логиÑеÑком декодиÑовании двÑÑ ÑазнÑÑ ÑÑанзакÑий. ÐÑо пÑиведÑÑ Ðº взаимоблокиÑовке ÑолÑко в Ñом ÑлÑÑае, еÑли Ñ Ð¿ÑбликÑемой ÑаблиÑÑ ÐµÑÑÑ ÑÑиггеÑ.ÐÑполнение
TRUNCATEÐ´Ð»Ñ ÑаблиÑÑ ÐºÐ°Ñалога (в Ñом ÑиÑле полÑзоваÑелÑÑкой) в ÑÑанзакÑии.
ÐамеÑÑÑе, ÑÑо ÑÑи командÑ, ÑпоÑобнÑе вÑзваÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð±Ð»Ð¾ÐºÐ¸ÑовкÑ, могÑÑ Ð¿ÑименÑÑÑÑÑ Ð½Ðµ ÑолÑко к Ñвно ÑказаннÑм вÑÑе ÑаблиÑам ÑиÑÑемного каÑалога, но Ñакже и к лÑбÑм дÑÑгим ÑаблиÑам каÑалога (в Ñом ÑиÑле полÑзоваÑелÑÑким).