sqlserver資料庫大型應用解決方案經驗總結

2021-10-27 22:41:03 字數 2832 閱讀 1426

資料條數很少,資料內容也不大,則直接同步資料

資料條數很少,但是裡面包含大資料型別,比如文字,二進位制資料等,則先對資料進行壓縮然後再同步,從而減少網路頻寬的占用和傳輸所用的時間。

資料條數很多,此時中介軟體會拿到造成資料變化的sql語句, 然後對sql語句進行解析,分析其執行計畫和執行成本,並選擇是同步資料還是同步sql語句到其他的資料庫中。此種情況應用在對錶結構進行調整或者批量更改資料的時候非常有用。

3、優缺點

(1) 擴充套件性強:當系統要更高資料庫處理速度時,只要簡單地增加資料庫伺服器就可以得到擴充套件。

(2) 可維護性:當某節點發生故障時,系統會自動檢測故障並轉移故障節點的應用,保證資料庫的持續工作。

(3) 安全性:因為資料會同步的多台伺服器上,可以實現資料集的冗餘,通過多份資料來保證安全性。另外它成功地將資料庫放到了內網之中,更好地保護了資料庫的安全性。

(4) 易用性:對應用來說完全透明,集群暴露出來的就是乙個ip

(1) 不能夠按照web伺服器的處理能力分配負載。

(2) 負載均衡器(控制端)故障,會導致整個資料庫系統癱瘓。

二、資料庫的讀寫分離

1,實現原理:讀寫分離簡單的說是把對資料庫讀和寫的操作分開對應不同的資料庫伺服器,這樣能有效地減輕資料庫壓力,也能減輕io壓力。主資料庫提供寫操作,從資料庫提供讀操作,其實在很多系統中,主要是讀的操作。

當主資料庫進行寫操作時,資料要同步到從的資料庫,這樣才能有效保證資料庫完整性。

(ebay的讀寫比率是260:1,ebay的讀寫分離)

(微軟資料庫分發)

2,實現方法:在ms sql server中可以使用發布定義的方式實現資料庫複製,實現讀寫分離,複製是將一組資料從乙個資料來源拷貝到多個資料來源的技術,是將乙份資料發布到多個儲存站點上的有效方式。使用複製技術,使用者可以將乙份資料發布到多台伺服器上。

複製技術可以確保分布在不同地點的資料自動同步更新,從而保證資料的一致性。sql server複製技術型別有三種,分別是:快照複製、事務複製、合併複製。

sql server 主要採用出版物、訂閱的方式來處理複製。源資料所在的伺服器是出版伺服器,負責發表資料。出版伺服器把要發表的資料的所有改變情況的拷貝複製到分發伺服器,分發伺服器包含有乙個分發資料庫,可接收資料的所有改變,並儲存這些改變,再把這些改變分發給訂閱伺服器。

3,優缺點

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

(2)資料量大時同步效率差:單錶資料量過大時插入和更新因索引,磁碟io等問題,效能會變的很差。

(3)同時連線多個(至少兩個)資料庫:至少要連線到兩個資料資料庫,實際的讀寫操作是在程式**中完成的,容易引起混亂

(4)讀具有高效能高可靠性和可伸縮:唯讀伺服器,因為沒有寫操作,會大大減輕磁碟io等效能問題,大大提高效率;唯讀伺服器可以採用負載均衡,主資料庫發布到多個唯讀伺服器上實現讀操作的可伸縮性。

三、資料庫/資料表拆分(分布式)

通過某種特定的條件,將存放在同乙個資料庫中的資料分散存放到多個資料庫上,實現分布儲存,通過路由規則路由訪問特定的資料庫,這樣一來每次訪問面對的就不是單台伺服器了,而是n臺伺服器,這樣就可以降低單台機器的負載壓力。提示:sqlserver 2005版本之後,可以友好的支援「表分割槽」。

垂直(縱向)拆分:是指按功能模組拆分,比如分為訂單庫、商品庫、使用者庫...這種方式多個資料庫之間的表結構不同。

水平(橫向)拆分:將同乙個表的資料進行分塊儲存到不同的資料庫中,這些資料庫中的表結構完全相同。

(縱向拆分)

(橫向拆分)

1,實現原理:使用垂直拆分,主要要看應用型別是否合適這種拆分方式,如系統可以分為,訂單系統,商品管理系統,使用者管理系統業務系統比較明的,垂直拆分能很好的起到分散資料庫壓力的作用。業務模組不明晰,耦合(表關聯)度比較高的系統不適合使用這種拆分方式。

但是垂直拆分方式並不能徹底解決所有壓力問題,例如有乙個5000w的訂單表,操作起來訂單庫的壓力仍然很大,如我們需要在這個表中增加(insert)一條新的資料,insert完畢後,資料庫會針對這張表重新建立索引,5000w行資料建立索引的系統開銷還是不容忽視的,反過來,假如我們將這個表分成100個table呢,從table_001一直到table_100,5000w行資料平均下來,每個子表裡邊就只有50萬行資料,這時候我們向一張只有50w行資料的table中insert資料後建立索引的時間就會呈數量級的下降,極大了提高了db的執行時效率,提高了db的併發量,這種拆分就是橫向拆分

2,實現方法:垂直拆分,拆分方式實現起來比較簡單,根據表名訪問不同的資料庫就可以了。橫向拆分的規則很多,這裡總結前人的幾點,

(1)順序拆分:如可以按訂單的日前按年份才分,2023年的放在db1中,2023年的db2,以此類推。當然也可以按主鍵標準拆分。

優點:可部分遷移

缺點:資料分布不均,可能2023年的訂單有100w,2023年的有500w。

(2)hash取模分: 對user_id進行hash(或者如果user_id是數值型的話直接使用user_id的值也可),然後用乙個特定的數字,比如應用中需要將乙個資料庫切分成4個資料庫的話,我們就用4這個數字對user_id的hash值進行取模運算,也就是user_id%4,這樣的話每次運算就有四種可能:結果為1的時候對應db1;結果為2的時候對應db2;結果為3的時候對應db3;結果為0的時候對應db4,這樣一來就非常均勻的將資料分配到4個db中。

優點:資料分布均勻

缺點:資料遷移的時候麻煩;不能按照機器效能分攤資料 。

(3)在認證庫中儲存資料庫配置

就是建立乙個db,這個db單獨儲存user_id到db的對映關係,每次訪問資料庫的時候都要先查詢一次這個資料庫,以得到具體的db資訊,然後才能進行我們需要的查詢操作。

優點:靈活性強,一對一關係

缺點:每次查詢之前都要多一次查詢,會造成一定的效能損失。

SQL server資料庫總結筆記

建表的兩種方式 一 兒子,爸爸,爺爺式 包含式,屬於式 至少需要兩個表。經典案例 學校 班級 學生 建表訣竅 1 乙個物件 實體 乙個表 2 小表裡面有大表 主鍵 下級的小表包含上一級大表的主鍵,比如學生表裡面包含班級表的主鍵,班級表包含學校表的主鍵,學生表裡面沒有必要包含學校表的主鍵,不是不行,而...

SQLserver資料庫設計餐飲管理系統

遼寧工業大學 sql server資料庫設計實訓 報告 題目 餐飲管理系統 院 系 軟體學院 專業班級 電子商務 國際 學號學生姓名 指導教師 翟寶峰 教師職稱 副教授 起止時間 2011.09.03 2011.09.14 設計任務及評語 院 系 軟體學院教研室 軟體教研室 目錄第1章設計目的與要求...

01SqlServer資料庫管理與維護

資料庫的安裝與配置 資料庫建立 刪除 備份 分離等 資料表的建立 刪除 修改 約束型別及建立,修改 一 概述 1 專業術語 sql structured query language的縮寫,意思為結構化查詢語言。sql server 是乙個關聯式資料庫管理系統 2 發展歷程 1988年 微軟與syb...