以下內(nèi)容皆為個人摸索,沒有人專門指導(公司不給力啊!DBA和大牛都木有。。。),所以難免出錯,如有錯誤歡迎指正,小子勇于接受批評~(*^__^*) ~

水平分庫分表和垂直分庫分表,大家都經(jīng)常談,我說下我的理解,看圖:

垂直分表就不用說了,基本上會SQLServer的都會。

 

垂直分庫就是根據(jù)業(yè)務(wù)需求來分庫,比如教育系列的,可以分為資訊,課程,用戶(學生,學校)三個數(shù)據(jù)庫。比如電商的可以分為訂單,商品,用戶(商家,消費者)三個數(shù)據(jù)庫。這邊只是舉個例子,具體的你得根據(jù)你們自己業(yè)務(wù)的實際情況來分,不是分的越多越好,最好是遇到瓶頸了再去做這些事情(這個過程才能學到很多東西)

水平分表主要就兩種方法,Hash取余法和時間路由法。我重點說下時間路由的方法,這種方案后期擴容和歷史數(shù)據(jù)抽離【結(jié)合列索引更勁爆哦~】比較方便。

舉個簡單的路由表:(時間你可以用傳統(tǒng)的格式,我這邊用的是時間軸)

這個是文章表的時間路由表,每次查詢文章的時候根據(jù)查詢的時間看看

比如我現(xiàn)在準備寫入數(shù)據(jù),當前時間 2016/11/18 16:37:29 ==》1479458249

select RTableName from Route_Article where 1479458249<REndTime and 1479458249>RCreateTime

就可以知道我應(yīng)該往哪個表里面寫數(shù)據(jù):==》Article2

同理,想查詢某個時間的數(shù)據(jù)也是可以通過路由表知道該往哪個表里面查詢

 

水平分庫之前提了一下文件組(http://www.cnblogs.com/dunitian/p/5276431.html)后面還會有一篇文章進行擴展說明(http://www.cnblogs.com/dunitian/p/6078512.html),這邊就不說了

其實企業(yè)里面用的最多的是復合型的,比如:水平分庫分表 ,水平分庫+垂直分庫+分表

真的有了這方面的瓶頸的話水平分表一般只能緩解,并不能真正解決,畢竟還是在一臺服務(wù)器上。單表的數(shù)據(jù)量是減少了,但是IO,連接數(shù),帶寬之類的瓶頸并不能有多大的改善。

水平分庫分