邏輯解碼可用於建立同步複製解決方案,其使用者介面與串流複製的同步複製相同。 為此,必須使用串流複製介面 (請參閱第 47.3 節) 來串流輸出資料。 客戶端必須傳送 Standby status update (F)
(請參閱第 53.4 節) 訊息,就像串流複製客戶端一樣。
透過邏輯解碼接收變更的同步副本將在單一資料庫的範圍內運作。 由於與此相反,synchronous_standby_names
目前是伺服器範圍,這表示如果同時使用多個資料庫,此技術將無法正常運作。
在同步複製設定中,如果交易專門鎖定了 [使用者] 目錄表,則可能會發生死鎖。 有關使用者目錄表的資訊,請參閱第 47.6.2 節。 這是因為交易的邏輯解碼可能會鎖定目錄表以存取它們。 為了避免這種情況,使用者必須避免對 [使用者] 目錄表進行獨佔鎖定。 這可能會以下列方式發生
在交易中對 pg_class
發出明確的 LOCK
。
在交易中對 pg_class
執行 CLUSTER
。
在 pg_class
上的 LOCK
命令之後 PREPARE TRANSACTION
,並允許對兩階段交易進行邏輯解碼。
在 pg_trigger
上的 CLUSTER
命令之後 PREPARE TRANSACTION
,並允許對兩階段交易進行邏輯解碼。 僅當發布的表格具有觸發程序時,才會導致死鎖。
在交易中對 [使用者] 目錄表執行 TRUNCATE
。
請注意,這些命令不僅會對上面列出的系統目錄表造成死鎖,也會對其他目錄表造成死鎖。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單報告文件問題。