分表分庫與分區(qū)的區(qū)別及拆分策略

上一篇 <<<MyCat實現(xiàn)讀寫分離與動態(tài)數(shù)據(jù)源切換
下一篇 >>>MyCat的分片查詢原理


分表分庫與分區(qū)的區(qū)別
相同目的:解決并發(fā)能力、I/O 性能提升、將一張大表分成若干小表许起,業(yè)務(wù)同時訪問多個表。
(物理)分表:一張表分成N多個小表
(物理/邏輯)分區(qū):把一張表的數(shù)據(jù)分成N多個區(qū)塊弊决,這些區(qū)塊可以在同一個磁盤上,也可以在不同的磁盤上。
分區(qū)并不是生成新的數(shù)據(jù)表,而是將表的數(shù)據(jù)均衡分攤到不同的硬盤切揭,系統(tǒng)或是不同服務(wù)器存儲介子中,實際上還是一張表锁摔。

1.分表分庫存在的問題

1廓旬、自增ID問題
2、數(shù)據(jù)關(guān)聯(lián)查詢問題
3谐腰、數(shù)據(jù)同步問題

2.自增ID問題解決辦法

a孕豹、設(shè)置數(shù)據(jù)庫的步長
缺點:步長確定后,無法擴展新的mysql十气,不然生成步長的規(guī)則可能會發(fā)生變化励背。

查詢自增的步長
SHOW VARIABLES LIKE 'auto_inc%'
修改自增的步長
SET @@auto_increment_increment=10;
修改起始值
SET @@auto_increment_offset=5;
假設(shè)有兩臺mysql數(shù)據(jù)庫服務(wù)器
節(jié)點①自增  1 3 5 7 9 11 ….
節(jié)點②自增  2 4 6 8 10 12 ….

b、UUID形式砸西,缺點是不能排序
c叶眉、使用雪花算法或redis解決

3.數(shù)據(jù)庫分表分庫策略

3.1垂直拆分

垂直拆分就是根據(jù)不同的業(yè)務(wù),分為不同的數(shù)據(jù)庫芹枷,比如會員數(shù)據(jù)庫衅疙、訂單數(shù)據(jù)庫、支付數(shù)據(jù)庫等鸳慈,垂直拆分在大型電商系統(tǒng)中用的非常常見饱溢。
優(yōu)點:拆分后業(yè)務(wù)清晰,拆分規(guī)則明確走芋,系統(tǒng)之間整合或擴展容易绩郎。
缺點:
a潘鲫、部分業(yè)務(wù)表無法join,只能通過接口方式解決肋杖,提高了系統(tǒng)復(fù)雜度
b溉仑、存在分布式事務(wù)問題。

3.2水平拆分

水平拆分是按照某個字段的某種規(guī)則兽愤,把同一個表分散到不同的數(shù)據(jù)庫中彼念,每個表中包含一部分數(shù)據(jù)
優(yōu)點:該方式提高了系統(tǒng)的穩(wěn)定性跟負載能力
缺點:跨庫join性能較差

3.3水平拆分策略

3.3.1 求模算法

根據(jù)id進行十進制求摸運算,運算結(jié)果為分區(qū)索引
注意:數(shù)據(jù)庫節(jié)點分片數(shù)量無法更改浅萧,和ES集群非常相似的逐沙。

<mycat:rule xmlns:mycat="http://io.mycat/">
   <tableRule name="role1">
        <rule>
            <columns>id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!--指定分片數(shù)量,不可以被更改-->
        <property name="count">3</property>
</function> 
</mycat:rule>

create table user(id bigint not null auto_increment primary key,name varchar(100));

INSERT INTO `user`(`id`,`name`) 
VALUES 
(1,'dd'),
(2,'tt'),
(3,'cc'),
(4,'ww'),
(5,'kk');

select * from `user`;

3.3.2 分片枚舉

根據(jù)不同的枚舉常量洼畅,進行分類存儲

1.案例步驟:
創(chuàng)建數(shù)據(jù)庫userdb_1 吩案、 userdb_2、userdb_3 
2.修改partition-hash-int.txt 規(guī)則
wuhan=0
shanghai=1
suzhou=2
規(guī)則:
<mycat:rule xmlns:mycat="http://io.mycat/">
    <tableRule name="role2">
             <rule>
                <!--將要分片的表字段-->
                <columns>name</columns>
                <!--分片函數(shù)-->
                <algorithm>hash-int</algorithm>
                </rule>
    </tableRule>
    <function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">
        <!--標識配置文件名稱-->
        <property name="mapFile">partition-hash-int.txt</property>
        <!--type默認值為0帝簇,0表示Integer徘郭,非零表示String-->
        <property name="type">1</property>
        <!--所有的節(jié)點配置都是從0開始,即0代表節(jié)點1
        defaultNode 設(shè)置默認節(jié)點:小于0表示不設(shè)置默認節(jié)點丧肴,大于等于0表示設(shè)置默認節(jié)點
        如果碰到不識別的枚舉值残揉,就讓它路由到默認節(jié)點
        若默認節(jié)點未配置則報錯: like this:can't find datanode for sharding column:column_name val:ffffffff
        -->
        <property name="defaultNode">1</property>
    </function>
</mycat:rule>

3.3.3、范圍約定--此分片適用于提前規(guī)劃好分片字段某個范圍屬于哪個分片

3.3.4芋浮、日期指定--按日期(天)分片

3.3.5抱环、固定分片hash算法---類似于Hashmap,缺點是數(shù)據(jù)分布不均勻

3.3.6纸巷、通配取模

3.3.7镇草、ASCII碼求模通配

3.3.8、編程指定

3.3.9瘤旨、字符串拆分hash解析

tips:
配置好之后梯啤,mycat鏈接的控制平臺無法直接打開表,但可以用sql語句進行查詢和執(zhí)行操作存哲。
原因:每次查詢表的時候都會攜帶邏輯庫的名字


推薦閱讀:
<<<MySQL自帶主從復(fù)制原理
<<<MyCat實現(xiàn)讀寫分離與動態(tài)數(shù)據(jù)源切換
<<<MyCat的分片查詢原理
<<<Sharding-Jdbc實現(xiàn)讀寫分離
<<<Sharding-Jdbc的分片算法及分表分庫
<<<Sharding-Jdbc與MyCat區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末因宇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子祟偷,更是在濱河造成了極大的恐慌羽嫡,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肩袍,死亡現(xiàn)場離奇詭異,居然都是意外死亡婚惫,警方通過查閱死者的電腦和手機氛赐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門魂爪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艰管,你說我怎么就攤上這事滓侍。” “怎么了牲芋?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵撩笆,是天一觀的道長。 經(jīng)常有香客問我缸浦,道長夕冲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任裂逐,我火速辦了婚禮歹鱼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卜高。我一直安慰自己弥姻,他們只是感情好,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布掺涛。 她就那樣靜靜地躺著庭敦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪薪缆。 梳的紋絲不亂的頭發(fā)上秧廉,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音矮燎,去河邊找鬼定血。 笑死,一個胖子當著我的面吹牛诞外,可吹牛的內(nèi)容都是我干的澜沟。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼峡谊,長吁一口氣:“原來是場噩夢啊……” “哼茫虽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起既们,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤濒析,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啥纸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體号杏,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年斯棒,在試婚紗的時候發(fā)現(xiàn)自己被綠了盾致。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片主经。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖庭惜,靈堂內(nèi)的尸體忽然破棺而出罩驻,到底是詐尸還是另有隱情,我是刑警寧澤护赊,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布惠遏,位于F島的核電站,受9級特大地震影響骏啰,放射性物質(zhì)發(fā)生泄漏节吮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一器一、第九天 我趴在偏房一處隱蔽的房頂上張望课锌。 院中可真熱鬧,春花似錦祈秕、人聲如沸渺贤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽志鞍。三九已至,卻和暖如春方仿,著一層夾襖步出監(jiān)牢的瞬間固棚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工仙蚜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留此洲,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓委粉,卻偏偏與公主長得像呜师,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贾节,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一栗涂、為什么要分庫分表 軟件時代知牌,傳統(tǒng)應(yīng)用都有這樣一個特點:訪問量、數(shù)據(jù)量都比較小斤程,單庫單表都完全可以支撐整個業(yè)務(wù)角寸。...
    邴越閱讀 982評論 0 0
  • 原文地址:http://www.reibang.com/p/3f8395402f58 數(shù)據(jù)庫瓶頸 不管是 IO ...
    程序員的自我修養(yǎng)閱讀 337評論 0 0
  • 數(shù)據(jù)庫瓶頸 不管是 IO 瓶頸還是 CPU 瓶頸,最終都會導(dǎo)致數(shù)據(jù)庫的活躍連接數(shù)增加,進而逼近甚至達到數(shù)據(jù)庫可承載...
    茶還是咖啡閱讀 2,446評論 0 62
  • 分區(qū)(加快訪問速度) 什么時候分區(qū)袭厂? 一張表的查詢速度已經(jīng)慢到影響使用的時候墨吓。 sql經(jīng)過優(yōu)化 數(shù)據(jù)量大(表的大小...
    小幸運Q閱讀 213評論 0 0
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)、焦點纹磺、注意力、語言聯(lián)想亮曹、情景聯(lián)想 觀點: 1.統(tǒng)計學(xué)現(xiàn)在叫數(shù)據(jù)分析橄杨,社會...
    Jenaral閱讀 5,726評論 0 5