文章出處

SQLSERVER復制的要點

在論壇里經常有人問:SQLSERVER復制出問題了!!SQLSERVER復制不運行了!!SQLSERVER復制遇到阻塞了!!

然后最后來一句:“怎麼辦???????????????”

大家知道:我們使用SQLSERVER復制功能主要用來讀寫分離,當然還有其他的場景會用到SQLSERVER復制,不過大部分還是用在"讀寫分離"

根據《SQLSERVER數據庫大型應用解決方案總結》里總結的SQLSERVER復制的優缺點

文章地址:http://www.cnblogs.com/dinglang/archive/2012/01/10/2317748.html

優缺點 :

(1) 數據的實時性差:數據不是實時同步到自讀服務器上的,當數據寫入主服務器后,要在下次同步后才能查詢到。

(2) 數據量大時同步效率差:單表數據量過大時插入和更新因索引,磁盤IO等問題,性能會變的很差。

(3) 同時連接多個(至少兩個)數據庫:至少要連接到兩個數據數據庫,實際的讀寫操作是在程序代碼中完成的,容易引起混亂。

(4) 讀具有高性能高可靠性和可伸縮:只讀服務器,因為沒有寫操作,會大大減輕磁盤IO等性能問題,大大提高效率。

只讀服務器可以采用負載均衡,主數據庫發布到多個只讀服務器上實現讀操作的可伸縮性。

 ------------------------------------------------------華麗的分割線-----------------------------------------------------------

其實我們可以只同步某些表,不需要將整個數據庫里的所有表都同步到訂閱服務器上,而且SQLSERVER還支持只同步一張表里的某些列

有些人就是將整個數據庫里的表都同步,不管哪些表是經常訪問的,哪些表數據量比較大,哪些表不適合加主鍵或者索引

因為同步的一個條件是,表里必須要有主鍵,如果你需要同步所有表,那不是所有表都要加上主鍵??大家知道加上主鍵

相當于給表加了聚集索引,那么肯定影響數據修改的性能,所以大家只需要把需要同步/發布的表發布出來就可以了

沒必要把整個庫都發布出來,還有一些存儲過程、函數、視圖也是一樣,只需要同步經常訪問的或者必須要用到的就可以了

--------------------------------------------------------華麗的分割線---------------------------------------------------------

復制的前提條件:

(1)為了提高執行效率,可以限制訂閱服務器獲得的所有數據,或僅發布訂閱者真正需要的數據或訂閱者有權得到的數據
 
(2)在實現快照復制之前,為快照復制留出充足的磁盤空間
 
(3)在實現事務復制之前,分配足夠的日志空間,為分發數據庫留有足夠的磁盤空間
 
(4)為每一個表創建主鍵
 
(5)實現合并復制前移去timestamp列,由于訂閱服務器的數據也會傳遞到發布服務器,

應確保數據的完整性在各個訂閱服務器上都能得到保證,維護表之間的關聯參照

(6)在所有IDENTITY屬性字段上加上NOT FOR REPLICATION設置,以保證SQLSERVER在復制代理程序所添加的行上保留起始標識值,

但是繼續在其他用戶所添加的行上增加標識值。當用戶將某個新行添加到表時,標志值以通常的方式增加。當復制代理程序將該新行復制到

訂閱服務器時,再將該行插入到訂閱服務器表中時不更改標識值

----------------------------------------------------------華麗的分割線-----------------------------------------------------

下面附上我寫的一篇文章,關于復制的介紹和復制的注意事項,如果提高復制性能,定制復制標準,定義復制等

SQLSERVER復制

1、只發布必要的表或字段

2、定制性能標準

3、提高常規復制的性能

里面有幾個注意點,希望讀者可以詳細認真地讀一下,o(∩_∩)o

希望文章能幫到大家

如有不對的地方,歡迎大家拍磚!!


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()