本篇文章給大家分享的是有關(guān)Mysql中如何實現(xiàn)水平分表,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
十年的海曙網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整海曙建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“海曙網(wǎng)站設(shè)計”,“海曙網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
1. 根據(jù)業(yè)務(wù)屬性拆表
這種分表方式的算法大致是取模,hash,md5等。
用業(yè)務(wù)屬性拆表,業(yè)務(wù)關(guān)系復(fù)雜的情況下,如果要根據(jù)其他條件查詢,其他的條件都必須和這個屬性關(guān)聯(lián)起來,查詢條件必須帶有這個屬性。
例子:
用戶profile表根據(jù)用戶ID取模進(jìn)行水平拆分。
社區(qū)里有群組,群組里有應(yīng)用,應(yīng)用有各種類型??梢杂萌航MID,應(yīng)用ID拆表。
問題:
根據(jù)某個條件查詢時無法獲取拆表的屬性
1) 條件中含有分表的信息
比如用戶在某網(wǎng)站下了訂單,我們根據(jù)用戶ID對訂單進(jìn)行了分表,這樣用戶可以方便地查詢他所關(guān)聯(lián)的訂單。但用戶投訴時,客服需要根據(jù)訂單號查詢訂單,訂單號中可以含有分表的信息,比如訂單拆分成100張表,訂單號中可以有兩位用來表明該訂單處于哪張表中
2) 用key-value store存儲對應(yīng)關(guān)聯(lián)
原理是用key value store做索引表
3) 數(shù)據(jù)冗余
需要關(guān)聯(lián)的表可以進(jìn)行數(shù)據(jù)冗余。避免了查詢。
例子:
購買禮品。購買虛擬禮品時,我們根據(jù)了購買者的ID進(jìn)行了拆表,同時訂單號中也含有了分表信息。但是用戶還可能根據(jù)被贈送方進(jìn)行查詢,這時我們可以在購買成功后為被贈送方冗余生成一條記錄。
4) 緩存,NOSQL
和數(shù)據(jù)冗余類似。例子中提到的群組應(yīng)用的拆表例子,我們已經(jīng)按照群組ID和應(yīng)用類型進(jìn)行了分表。但是當(dāng)我要查詢最近所有類型的應(yīng)用時,就遇到困難了。我們需要把該群組的所有應(yīng)用類型都查詢一遍,而且還要再進(jìn)行排序,分頁等等。其實,可以用緩存的方式存儲最近幾百條應(yīng)用。
2. 根據(jù)時間拆表
當(dāng)表的關(guān)系比較復(fù)雜時,無法根據(jù)某個維度進(jìn)行分表。但是有明顯的時效性。
例子:
想必大家都用微薄,某人發(fā)的微薄,會被推送到千家萬戶。所以某條微薄是無法根據(jù)用戶ID進(jìn)行分表查詢。而微薄是有很強(qiáng)的時效性的。一年前的默認(rèn)的動態(tài)信息是不會再關(guān)心的。我們把微薄按時間分表,三個月一張表。而行級緩存(memcached)只存儲了一個月。用戶微薄收件箱(微薄ID列表)一般都是限長的。當(dāng)緩存服務(wù)器重啟或不命中時,需要查詢Mysql,mysql按時間分表,緩存不命中的情況下,大部分情況下都是查近三個月的微薄。所以近1年的微薄我們可以存儲在物理資源比較好的服務(wù)器上。
3. 根據(jù)自增長ID拆表
這種分割法不是取模分,而是每張表存指定量的數(shù)據(jù)。如果數(shù)據(jù)量到了,就存放到新表中。這樣可以完全控制每張表的數(shù)據(jù)量。關(guān)系非常簡單并且有時效性的情況下可以用。
4. 數(shù)據(jù)遷移的方式
當(dāng)一些很久之前的數(shù)據(jù),很少再查詢。比如員工工資表,我們可以只存今年的工資情況。而歷史數(shù)據(jù)我們可以遷移到一張salary_old表中,保證數(shù)據(jù)不會丟失。但也可以用來查詢。
以上就是Mysql中如何實現(xiàn)水平分表,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。