??作者:小劉在C站
??個(gè)人主頁(yè):?小劉主頁(yè)?
??努力不一定有回報(bào),但一定會(huì)有收獲加油!一起努力,共赴美好人生!
??學(xué)習(xí)兩年總結(jié)出的運(yùn)維經(jīng)驗(yàn),以及思科模擬器全套網(wǎng)絡(luò)實(shí)驗(yàn)教程。專欄:云計(jì)算技術(shù)
??小劉私信可以隨便問(wèn),只要會(huì)絕不吝嗇,感謝CSDN讓你我相遇!
目錄
MySQL
1 介紹
1.1 問(wèn)題分析
1.2 拆分策略
1.3 垂直拆分
2. 垂直分表
1.4 水平拆分
特點(diǎn):
特點(diǎn):
1.5 實(shí)現(xiàn)技術(shù)
2 MyCat概述
2.1 介紹
優(yōu)勢(shì):??????
2.2 下載
?2.3 安裝
MySQL
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。
MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)系數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語(yǔ)言是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),一般中小型和大型網(wǎng)站的開(kāi)發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)。
1 介紹
1.1 問(wèn)題分析
隨著互聯(lián)網(wǎng)及移動(dòng)互聯(lián)網(wǎng)的發(fā)展,應(yīng)用系統(tǒng)的數(shù)據(jù)量也是成指數(shù)式增長(zhǎng),若采用單數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ),存在以下性能瓶頸:
1. IO瓶頸:熱點(diǎn)數(shù)據(jù)太多,數(shù)據(jù)庫(kù)緩存不足,產(chǎn)生大量磁盤IO,效率較低。 請(qǐng)求數(shù)據(jù)太多,帶寬
不夠,網(wǎng)絡(luò)IO瓶頸。
2. CPU瓶頸:排序、分組、連接查詢、聚合統(tǒng)計(jì)等SQL會(huì)耗費(fèi)大量的CPU資源,請(qǐng)求數(shù)太多,CPU出現(xiàn)瓶頸。
為了解決上述問(wèn)題,我們需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行分庫(kù)分表處理。
分庫(kù)分表的中心思想都是將數(shù)據(jù)分散存儲(chǔ),使得單一數(shù)據(jù)庫(kù)/表的數(shù)據(jù)量變小來(lái)緩解單一數(shù)據(jù)庫(kù)的性能問(wèn)題,從而達(dá)到提升數(shù)據(jù)庫(kù)性能的目的。
1.2 拆分策略
分庫(kù)分表的形式,主要是兩種:垂直拆分和水平拆分。而拆分的粒度,一般又分為分庫(kù)和分表,所以組成的拆分策略最終如下:
1.3 垂直拆分
1. 垂直分庫(kù)
?垂直分庫(kù):以表為依據(jù),根據(jù)業(yè)務(wù)將不同表拆分到不同庫(kù)中。
特點(diǎn):
每個(gè)庫(kù)的表結(jié)構(gòu)都不一樣。
每個(gè)庫(kù)的數(shù)據(jù)也不一樣。
所有庫(kù)的并集是全量數(shù)據(jù)。
2. 垂直分表
?垂直分表:以字段為依據(jù),根據(jù)字段屬性將不同字段拆分到不同表中。
特點(diǎn):
每個(gè)表的結(jié)構(gòu)都不一樣。
每個(gè)表的數(shù)據(jù)也不一樣,一般通過(guò)一列(主鍵/外鍵)關(guān)聯(lián)。
所有表的并集是全量數(shù)據(jù)。
1.4 水平拆分
1. 水平分庫(kù)
?水平分庫(kù):以字段為依據(jù),按照一定策略,將一個(gè)庫(kù)的數(shù)據(jù)拆分到多個(gè)庫(kù)中。
特點(diǎn):
每個(gè)庫(kù)的表結(jié)構(gòu)都一樣。
每個(gè)庫(kù)的數(shù)據(jù)都不一樣。
所有庫(kù)的并集是全量數(shù)據(jù)。
2. 水平分表
?水平分表:以字段為依據(jù),按照一定策略,將一個(gè)表的數(shù)據(jù)拆分到多個(gè)表中。
特點(diǎn):
每個(gè)表的表結(jié)構(gòu)都一樣。
每個(gè)表的數(shù)據(jù)都不一樣。
所有表的并集是全量數(shù)據(jù)。
在業(yè)務(wù)系統(tǒng)中,為了緩解磁盤IO及CPU的性能瓶頸,到底是垂直拆分,還是水平拆分;具體是分
庫(kù),還是分表,都需要根據(jù)具體的業(yè)務(wù)需求具體分析。
1.5 實(shí)現(xiàn)技術(shù)
shardingJDBC:基于AOP原理,在應(yīng)用程序中對(duì)本地執(zhí)行的SQL進(jìn)行攔截,解析、改寫、路由處
理。需要自行編碼配置實(shí)現(xiàn),只支持java語(yǔ)言,性能較高。
MyCat:數(shù)據(jù)庫(kù)分庫(kù)分表中間件,不用調(diào)整代碼即可實(shí)現(xiàn)分庫(kù)分表,支持多種語(yǔ)言,性能不及前
者。
?本次課程,我們選擇了是MyCat數(shù)據(jù)庫(kù)中間件,通過(guò)MyCat中間件來(lái)完成分庫(kù)分表操作。
2 MyCat概述
2.1 介紹
Mycat是開(kāi)源的、活躍的、基于Java語(yǔ)言編寫的MySQL數(shù)據(jù)庫(kù)中間件??梢韵袷褂胢ysql一樣來(lái)使用mycat,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)根本感覺(jué)不到mycat的存在。
開(kāi)發(fā)人員只需要連接MyCat即可,而具體底層用到幾臺(tái)數(shù)據(jù)庫(kù),每一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器里面存儲(chǔ)了什么數(shù)據(jù),都無(wú)需關(guān)心。 具體的分庫(kù)分表的策略,只需要在MyCat中配置即可。
優(yōu)勢(shì):??????
性能可靠穩(wěn)定
強(qiáng)大的技術(shù)團(tuán)隊(duì)
體系完善
社區(qū)活躍
2.2 下載
下載地址:這里這里
?2.3 安裝
Mycat是采用java語(yǔ)言開(kāi)發(fā)的開(kāi)源的數(shù)據(jù)庫(kù)中間件,支持Windows和Linux運(yùn)行環(huán)境,下面介紹
MyCat的Linux中的環(huán)境搭建。我們需要在準(zhǔn)備好的服務(wù)器中安裝如下軟件。
MySQL
JDK
Mycat
??關(guān)注,就是我創(chuàng)作的動(dòng)力
??點(diǎn)贊,就是對(duì)我最大的認(rèn)可文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-528236.html
??這里是小劉,勵(lì)志用心做好每一篇文章,謝謝大家文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-528236.html
到了這里,關(guān)于MySQL-分庫(kù)分表詳解(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!