亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql中如何實現水平分表

發布時間:2021-08-04 17:28:36 來源:億速云 閱讀:711 作者:Leah 欄目:數據庫

本篇文章給大家分享的是有關Mysql中如何實現水平分表,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。


 
1.       根據業務屬性拆表
 
這種分表方式的算法大致是取模,hash,md5等。
 
用業務屬性拆表,業務關系復雜的情況下,如果要根據其他條件查詢,其他的條件都必須和這個屬性關聯起來,查詢條件必須帶有這個屬性。
 
例子:
 
用戶profile表根據用戶ID取模進行水平拆分。
 
社區里有群組,群組里有應用,應用有各種類型。可以用群組ID,應用ID拆表。
 
問題:
 
根據某個條件查詢時無法獲取拆表的屬性
 
1)         條件中含有分表的信息
 
比如用戶在某網站下了訂單,我們根據用戶ID對訂單進行了分表,這樣用戶可以方便地查詢他所關聯的訂單。但用戶投訴時,客服需要根據訂單號查詢訂單,訂單號中可以含有分表的信息,比如訂單拆分成100張表,訂單號中可以有兩位用來表明該訂單處于哪張表中
 
2)         用key-value store存儲對應關聯
 
原理是用key value store做索引表
 
3)         數據冗余
 
需要關聯的表可以進行數據冗余。避免了查詢。
 
例子:
 
購買禮品。購買虛擬禮品時,我們根據了購買者的ID進行了拆表,同時訂單號中也含有了分表信息。但是用戶還可能根據被贈送方進行查詢,這時我們可以在購買成功后為被贈送方冗余生成一條記錄。
 
4)         緩存,NOSQL
 
和數據冗余類似。例子中提到的群組應用的拆表例子,我們已經按照群組ID和應用類型進行了分表。但是當我要查詢最近所有類型的應用時,就遇到困難了。我們需要把該群組的所有應用類型都查詢一遍,而且還要再進行排序,分頁等等。其實,可以用緩存的方式存儲最近幾百條應用。
 
2.       根據時間拆表
 
當表的關系比較復雜時,無法根據某個維度進行分表。但是有明顯的時效性。
 
例子:
 
想必大家都用微薄,某人發的微薄,會被推送到千家萬戶。所以某條微薄是無法根據用戶ID進行分表查詢。而微薄是有很強的時效性的。一年前的默認的動態信息是不會再關心的。我們把微薄按時間分表,三個月一張表。而行級緩存(memcached)只存儲了一個月。用戶微薄收件箱(微薄ID列表)一般都是限長的。當緩存服務器重啟或不命中時,需要查詢Mysql,mysql按時間分表,緩存不命中的情況下,大部分情況下都是查近三個月的微薄。所以近1年的微薄我們可以存儲在物理資源比較好的服務器上。
 
3.       根據自增長ID拆表
 
這種分割法不是取模分,而是每張表存指定量的數據。如果數據量到了,就存放到新表中。這樣可以完全控制每張表的數據量。關系非常簡單并且有時效性的情況下可以用。
 
4.       數據遷移的方式
 
當一些很久之前的數據,很少再查詢。比如員工工資表,我們可以只存今年的工資情況。而歷史數據我們可以遷移到一張salary_old表中,保證數據不會丟失。但也可以用來查詢。

以上就是Mysql中如何實現水平分表,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雅安市| 平度市| 乌拉特后旗| 迭部县| 资中县| 神农架林区| 贡觉县| 邯郸市| 娄烦县| 新源县| 开原市| 监利县| 绥江县| 垣曲县| 方正县| 蒙山县| 偏关县| 乃东县| 龙山县| 囊谦县| 安仁县| 马山县| 枞阳县| 资源县| 文成县| 盐边县| 青州市| 玛多县| 淮阳县| 南康市| 沙河市| 阿拉善右旗| 禄丰县| 永修县| 胶南市| 永平县| 宽城| 阿克苏市| 五家渠市| 苏尼特右旗| 绥阳县|