VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
魔兽世界wow > 數據庫 > sql語句 >
  • sql語句大全之SQLServer性能優化之---存儲優化系列

  • 2018-11-28 16:41 來源:未知
水平分庫分表和垂直分庫分表,大家都經常談,我說下我的理解,看圖: 
 
垂直分表就不用說了,基本上會SQLServer的都會。
 
垂直分庫就是根據業務需求來分庫,比如教育系列的,可以分為資訊,課程,用戶(學生,學校)三個數據庫。比如電商的可以分為訂單,商品,用戶(商家,消費者)三個數據庫。這邊只是舉個例子,具體的你得根據你們自己業務的實際情況來分,不是分的越多越好,最好是遇到瓶頸了再去做這些事情(這個過程才能學到很多東西)
 
水平分表主要就兩種方法,Hash取余法和時間路由法。我重點說下時間路由的方法,這種方案后期擴容和歷史數據抽離【結合列索引更勁爆哦~】比較方便。
 
舉個簡單的路由表:(時間你可以用傳統的格式,我這邊用的是時間軸)
 
這個是文章表的時間路由表,每次查詢文章的時候根據查詢的時間看看 
 
比如我現在準備寫入數據,當前時間 2016/11/18 16:37:29 ==》1479458249
 
select RTableName from Route_Article where where 1479458249 between RCreateTime and REndTime
 
就可以知道我應該往哪個表里面寫數據:==》Article2
 
同理,想查詢某個時間的數據也是可以通過路由表知道該往哪個表里面查詢 
 
 
水平分庫之前提了一下文件組(//www.cnblogs.com/dunitian/p/5276431.html)后面還會有一篇文章進行擴展說明(//www.cnblogs.com/dunitian/p/6078512.html),這邊就不說了。
 
其實企業里面用的最多的是復合型的,比如:水平分庫分表 ,水平分庫+垂直分庫+分表
 
真的有了這方面的瓶頸的話水平分表一般只能緩解,并不能真正解決,畢竟還是在一臺服務器上。單表的數據量是減少了,但是IO,連接數,帶寬之類的瓶頸并不能有多大的改善。
 
水平分庫分表可以把IO瓶頸解決一部分,優化效果還是很明顯的:
 
 
 
水平分庫+垂直分庫+分表,這個方案可以利用鏈接服務器,這樣路由表就不用改了,把路由表的表名改成完整的名稱(后面會說更好的方法)
 
 
先設置一下鏈接服務器。我自己摸索的這個方法可能和網上的不太一樣,不要慌(沒辦法,我按照網上的沒成功啊+_+)
 
 
 
 
 
 
 
這個感覺挺好的,一般情況下都是沒問題的,但是遇到數據庫名字或者表改了就蛋疼了,得改多少東西??關鍵是不太方便,名字那么長。。。===》so,引入了同義詞 
create synonym Article for [192.168.1.250].[BigValues].[dbo].[Article]
 
 
再看看效果吧: 
 
是不是感覺特簡單
--------------------- 
作者:開發10室劉偉強 
來源:CSDN 
原文:https://blog.csdn.net/qq_34246965/article/details/82191744 
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
相關教程