一、介紹
單庫瓶頸:如果在項目中使用的都是單MySQL服務(wù)器,則會隨著互聯(lián)網(wǎng)及移動互聯(lián)網(wǎng)的發(fā)展,應(yīng)用系統(tǒng)的數(shù)據(jù)量也是成指數(shù)式增長,若采用單數(shù)據(jù)庫進行存儲,存在一下性能瓶頸:
- IO瓶頸:熱點數(shù)據(jù)太多,數(shù)據(jù)庫緩存不足,產(chǎn)生大量磁盤IO,效率低下,請求數(shù)據(jù)太多,帶寬不夠,網(wǎng)絡(luò)IO瓶頸。
- CPU瓶頸:排序、分組、連接查詢、聚合統(tǒng)計等SQL會耗費大量的CPU資源,請求數(shù)太多,CPU出現(xiàn)瓶頸。
分庫分表:就是將數(shù)據(jù)分散存儲,是將單一數(shù)據(jù)庫/表的數(shù)據(jù)量變小來緩解單一數(shù)據(jù)庫的性能問題,從而達到提升數(shù)據(jù)庫性能的目的。
二、拆分策略
2.1 垂直分庫
特點:以表為依據(jù),根據(jù)業(yè)務(wù)將不同表拆分到不同庫中。
-
- 每個庫的表結(jié)構(gòu)都不一樣
- 每個表的數(shù)據(jù)也不一樣
- 所有庫的并集是全量數(shù)據(jù)
2.2 垂直分表
特點:以字段為依據(jù),根據(jù)字段屬性將不同字段分到不同表中?。
-
- 每個表的結(jié)構(gòu)都不一樣
- 每個表的數(shù)據(jù)也不一樣,一般通過一列(主鍵/外鍵)管理
- 所有表的并集是全量數(shù)據(jù)
2.3 水平分庫?
特點:以字段為依據(jù),按照一定策略,將一個庫的數(shù)據(jù)拆分到多個庫中
-
- 每個庫的表結(jié)構(gòu)一樣。
- 每個庫的數(shù)據(jù)都不一樣
- 所有庫的并集是全量數(shù)據(jù)
2.4 水平分表
特點:以字段為依據(jù),按照一定策略,將一個表的數(shù)據(jù)拆分到多個表中。
-
- 每個表的結(jié)構(gòu)都一樣
- 每個表的數(shù)據(jù)都不一樣
- 所有表的并集是全量數(shù)據(jù)
2.5 組合策略
在實際應(yīng)用中,可以同時采用分庫和分表的策略,根據(jù)業(yè)務(wù)需求和系統(tǒng)負載情況來選擇合適的分庫分表策略。
三、分庫分別鍵
3.1 業(yè)務(wù)鍵
根據(jù)業(yè)務(wù)需求,選擇具有業(yè)務(wù)含義的鍵作為分庫分表的依據(jù),例如,按照用戶ID分表
3.2 時間鍵
對于大部分應(yīng)用來說,按時間進行分表是一個常見的選擇,可以更容易地管理歷史數(shù)據(jù)
3.3 哈希建
使用哈希函數(shù)將數(shù)據(jù)均勻地分散到不同的庫或表中,以防止熱點數(shù)據(jù)集中存儲
3.4 范圍鍵
按照數(shù)據(jù)范圍進行分表,適用于數(shù)據(jù)按照某一范圍規(guī)律增長的情況文章來源:http://www.zghlxwxcb.cn/news/detail-750802.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-750802.html
到了這里,關(guān)于MySQL運維3-分庫分表策略的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!