釋出
釋出可以被定義在任何物理複製的主伺服器上。定義有釋出的節點被稱為釋出者。釋出是從一個表或者一組表生成的改變的集合,也可以被描述為更改集合或者複製集合。每個釋出都只存在於一個資料庫中。
釋出與模式不同,不會影響表的訪問方式。如果需要,每個表都可以被加入到多個釋出。當前,釋出只能包含表。物件必須被明確地加入到釋出,除非釋出是用ALL TABLES建立的。
釋出可以選擇把它們產生的更改限制為INSERT、UPDATE、DELETE的任意組合,類似於觸發器如何被特定事件型別觸發的方式。預設情況下,所有操作型別都會被複制。
為了能夠複製UPDATE和DELETE操作,被髮布的表必須配置有一個“複製標識”,這樣在訂閱者那一端才能標識對於更新或刪除合適的行。預設情況下,複製標識就是主鍵(如果有主鍵)。也可以在複製標識上設定另一個唯一索引(有特定的額外要求)。如果表沒有合適的鍵,那麼可以設定成複製標識“full”,它表示整個行都成為那個鍵。不過,這樣做效率很低,只有在沒有其他方案的情況下才應該使用。如果在釋出者端設定了“full”之外的複製標識,在訂閱者端也必須設定一個複製標識,它應該由相同的或者少一些的列組成。如何設定複製標識的細節請參考REPLICA IDENTITY。如果在複製UPDATE或DELETE操作的釋出中加入了沒有複製標識的表,那麼訂閱者上後續的UPDATE或DELETE操作將導致錯誤。不管有沒有複製標識,INSERT操作都能繼續下去。
每一個釋出都可以有多個訂閱者。
Publication透過使用CREATE PUBLICATION命令建立並且可以在之後使用相應的命令進行修改或者刪除。
表可以使用ALTER PUBLICATION動態地增加或者移除。ADD TABLE以及DROP TABLE操作都是事務性的,因此一旦該事務提交,該表將以正確的快照開始或者停止複製。