邏輯解碼可用於構建與 同步複製 具有相同使用者介面的 流複製 同步複製解決方案。為此,必須使用流複製介面(參見 第 47.3 節)來流式傳輸資料。客戶端必須傳送 Standby status update (F)
(參見 第 54.4 節)訊息,就像流複製客戶端所做的那樣。
透過邏輯解碼接收更改的同步副本將在單個數據庫的範圍內工作。相反,由於 synchronous_standby_names
當前是伺服器範圍的,這意味著如果使用一個以上的資料庫,此技術將無法正常工作。
在同步複製設定中,如果事務已獨佔鎖定 [使用者] 目錄表,則可能發生死鎖。有關使用者目錄表的資訊,請參見 第 47.6.2 節。這是因為事務的邏輯解碼可能會鎖定目錄表以訪問它們。為避免此問題,使用者必須避免對 [使用者] 目錄表採取獨佔鎖。這可能以以下方式發生:
在事務中對 pg_class
發出顯式的 LOCK
。
在事務中對 pg_class
執行 CLUSTER
。
在對 pg_class
執行 LOCK
命令後執行 PREPARE TRANSACTION
,並允許對兩階段事務進行邏輯解碼。
在對 pg_trigger
執行 CLUSTER
命令後執行 PREPARE TRANSACTION
,並允許對兩階段事務進行邏輯解碼。這僅在釋出的表有觸發器時才會導致死鎖。
在事務中對 [使用者] 目錄表執行 TRUNCATE
。
請注意,這些命令不僅可能導致上述系統目錄表死鎖,還可能導致其他目錄表死鎖。
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。