Mysql性能提升方案對(duì)比全套_第1頁(yè)
Mysql性能提升方案對(duì)比全套_第2頁(yè)
Mysql性能提升方案對(duì)比全套_第3頁(yè)
Mysql性能提升方案對(duì)比全套_第4頁(yè)
Mysql性能提升方案對(duì)比全套_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Mysql性能提升方案對(duì)比在高并發(fā)環(huán)境中,需要我們提供持續(xù)穩(wěn)定的數(shù)據(jù)庫(kù)解決方案,因此解決方案需要包括以下特點(diǎn):1.高可用(熱備)解決單節(jié)點(diǎn)失效,可以動(dòng)態(tài)路由到其他可用節(jié)點(diǎn)問(wèn)題。2.讀寫(xiě)分離,主寫(xiě),從讀,從節(jié)點(diǎn)做負(fù)載均衡,(主從復(fù)制)解決讀寫(xiě)請(qǐng)求的分發(fā),主寫(xiě),從讀,一定程度上負(fù)載了讀寫(xiě)的壓力。(用于多讀的項(xiàng)目場(chǎng)景)3.多主之間做負(fù)載均衡,多主復(fù)制解決所有sql請(qǐng)求可以負(fù)載路由到不同的mysql服務(wù)。4.分庫(kù)分表解決數(shù)據(jù)存儲(chǔ),避免所有數(shù)據(jù)存在一個(gè)庫(kù)一張表中,解決單表單庫(kù)數(shù)據(jù)過(guò)大。5.分區(qū)解決數(shù)據(jù)存儲(chǔ),避免所有數(shù)據(jù)存在一個(gè)庫(kù)一張表中,解決單表數(shù)據(jù)過(guò)大??捎玫慕鉀Q方案,以及優(yōu)缺點(diǎn)對(duì)比:1.MysqlRouter(innodbcluster)①I(mǎi)nnerdbclustoer一部分,可以實(shí)現(xiàn)熱備(read-write:首個(gè)可用,其他備用)、請(qǐng)求負(fù)載(read-only:輪詢(xún))②read-only:可以對(duì)后端服務(wù)進(jìn)行故障轉(zhuǎn)移③2.1.x單個(gè)節(jié)點(diǎn)連接限制在500以?xún)?nèi),8.0版本官網(wǎng)說(shuō)在5000+④部署在應(yīng)用服務(wù)器,可以多級(jí)部署,暫時(shí)沒(méi)有做router的高可用⑤增刪節(jié)點(diǎn)只能重啟。⑥不對(duì)sql進(jìn)行拆包檢查,不會(huì)過(guò)濾sql,做對(duì)請(qǐng)求進(jìn)行路由。我們可以使用其read-only:輪詢(xún)模式,對(duì)請(qǐng)求負(fù)載均衡。2.MySQLProxy官方不建議使用在生產(chǎn)環(huán)境,并且目前已經(jīng)不提供下載插件的鏈接。(不建議使用)3.Ndbcluster(mysqlcluster)⑦分布式存儲(chǔ)引擎,可以由多個(gè)NDBCluster存儲(chǔ)引擎組成集群分別存放整體數(shù)據(jù)的一部分。⑧和Innodb一樣,支持事務(wù),內(nèi)存數(shù)據(jù)庫(kù)。⑨可以和mysqld分開(kāi)存在于獨(dú)立的主機(jī)上,然后通過(guò)網(wǎng)絡(luò)和mysqld通信交互。⑩內(nèi)存需求量巨大:新版本索引以及被索引的數(shù)據(jù)必須存放在內(nèi)存中,老版本所有數(shù)據(jù)和索引必須存在于內(nèi)存中。?不支持創(chuàng)建臨時(shí)表(createtemporarytable)?不支持基于行的二進(jìn)制異步復(fù)制(row和maxed),只支持同步復(fù)制,效率更快。?不支持分布式事務(wù)XA,多join查詢(xún)會(huì)變慢,單表查詢(xún)會(huì)非???。?只支持讀已提交事務(wù)隔離級(jí)別。默認(rèn)是可重復(fù)讀。?只是對(duì)簡(jiǎn)單查詢(xún)提升速度,寫(xiě)入也會(huì)有速度提升,因?yàn)榉旁趦?nèi)存中檢索,考慮事務(wù)隔離級(jí)別帶來(lái)的問(wèn)題。(幻讀)默認(rèn)隔離級(jí)別是有效解決了幻讀問(wèn)題。?多個(gè)庫(kù)數(shù)據(jù)一致,同時(shí)對(duì)多個(gè)庫(kù)進(jìn)行寫(xiě)入,然后放入內(nèi)存中讀取。?傳說(shuō)中的高并發(fā)數(shù)據(jù)庫(kù)環(huán)境,本身多個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)服務(wù),支持失效轉(zhuǎn)移,熱備功能。原則上只是加快了查詢(xún)性能,但是額外的內(nèi)存和機(jī)器都必須加大。可以權(quán)衡利弊選擇,特別是以后大數(shù)據(jù)量?jī)?yōu)化考慮。4.Mycat①支持多個(gè)分表模式,支持多租戶,主從模式(讀寫(xiě)分離、熱備),多庫(kù)之間二進(jìn)制復(fù)制數(shù)據(jù)。②但是根據(jù)項(xiàng)目需要改一些業(yè)務(wù)代碼,來(lái)適應(yīng)Mycatl的分表規(guī)則,二次開(kāi)發(fā)工作比較多,并且以后都要按著mycat的規(guī)則走。③熱備、集群方面都有解決方案。如果能容忍修改業(yè)務(wù)代碼,也可以考慮,由于是java項(xiàng)目使用多路復(fù)用線程模型,會(huì)受到硬件和jvm性能的限制。5.Mysql官方分表④表存儲(chǔ)引擎為merge,MyISAM表以邏輯方式組合在一起,并作為1個(gè)對(duì)象引用它們。⑤通常把多個(gè)MyISAM表的結(jié)果union起來(lái)組成merge存儲(chǔ)引擎返回結(jié)果。6.Mysql分區(qū)支持4種分區(qū)模式和子分區(qū),解決數(shù)據(jù)存儲(chǔ)一個(gè)區(qū)的問(wèn)題。項(xiàng)目中根據(jù)時(shí)間分區(qū),可以使用。7.多主模式,解決多寫(xiě),多讀(多主之間異步復(fù)制),負(fù)載均衡,熱備問(wèn)題Haproxy①軟件負(fù)載均衡,多種路由規(guī)則,故障轉(zhuǎn)移,4層7層代理,支持4萬(wàn)+并發(fā)。②可以使用keepalived實(shí)現(xiàn)熱備功能。③硬件負(fù)載均衡,最穩(wěn)定并發(fā)最高的負(fù)載方案,配置維護(hù)繁瑣,支支持4層代理。④可以使用keepalived實(shí)現(xiàn)熱備功能。Nginx⑤新版本支持mysql負(fù)載均衡,新版本支持4層7層代理,支持上萬(wàn)并發(fā)連接請(qǐng)求。⑥可以使用keepalived實(shí)現(xiàn)熱備功能可以使用任意一種方案,目前使用haproxy沒(méi)有問(wèn)題。8.Mysqlgroupreplication①把一組服務(wù),多個(gè)mysql服務(wù)配置在一個(gè)組中,一個(gè)事務(wù)的提交需要經(jīng)過(guò)組內(nèi)大多數(shù)節(jié)點(diǎn)決議,來(lái)決定該事務(wù)是否可以提交。②可以維護(hù)各個(gè)節(jié)點(diǎn)的數(shù)據(jù)最終一致性。③如果兩個(gè)請(qǐng)求對(duì)兩個(gè)節(jié)點(diǎn)中同一行數(shù)據(jù)進(jìn)行修改操作,只有第一個(gè)請(qǐng)求的事務(wù)會(huì)成功,其他會(huì)失敗,高并發(fā)中會(huì)有問(wèn)題。④集群個(gè)數(shù)是n+1個(gè),必須滿足大多數(shù),否則事務(wù)會(huì)一致阻塞。⑤節(jié)點(diǎn)數(shù)最多9個(gè),配置為奇數(shù)個(gè),否則就會(huì)出現(xiàn)選舉對(duì)半現(xiàn)象,造成集群不可用。⑥兩種模式,單主和多主,所有節(jié)點(diǎn)只能配置同一種模式。⑦存儲(chǔ)引擎必須是innodb⑧每個(gè)表必須有主鍵,只支持ipv4,網(wǎng)絡(luò)帶寬要好⑨沒(méi)有負(fù)載均衡概念,只是維護(hù)一組中節(jié)點(diǎn)數(shù)據(jù)最終一致性只有熱備功能,高并發(fā)會(huì)有問(wèn)題9.Maxscale①mariadb公司開(kāi)發(fā)一款負(fù)載均衡中間件,支持主從讀寫(xiě)分離,同樣主從之間通過(guò)異步復(fù)制同步數(shù)據(jù)②可以配置只讀服務(wù)和讀寫(xiě)服務(wù)節(jié)點(diǎn),支持單節(jié)點(diǎn)故障轉(zhuǎn)移和自動(dòng)恢復(fù)③需要解析sql語(yǔ)句然后去路由。④效率上低于mysqlrouter和負(fù)載均衡中間件。⑤可以通過(guò)權(quán)重比來(lái)配置節(jié)點(diǎn)路由策略。(readConnRouter)⑥不支持分庫(kù)分表解析sql進(jìn)行多主的負(fù)載一定程度上有并發(fā)性能的損耗10.tddl阿里的分布式數(shù)據(jù)庫(kù)目前文檔很少,并且沒(méi)有完全開(kāi)源,不建議使用11.OneProxy數(shù)據(jù)庫(kù)中間件,阿里工程師開(kāi)發(fā),具有一下特點(diǎn):⑦讀寫(xiě)分離,自動(dòng)故障切換⑧高可用,可以結(jié)合keepalived這只浮動(dòng)Ip⑨主從服務(wù)器延時(shí)檢測(cè)⑩動(dòng)態(tài)擴(kuò)容?性能統(tǒng)計(jì)?連接池,禁止存儲(chǔ)過(guò)程調(diào)用?水平分區(qū)表,通過(guò)配置分表后綴,需要提前創(chuàng)建預(yù)設(shè)的分表?不支持部分函數(shù)查詢(xún)countdistinct、avg、having、跨庫(kù)join?目前最高只支持mysql5.7版本?主從復(fù)制使用的是同步復(fù)制,需要使用Mysqlgroupreplication進(jìn)行組內(nèi)同步復(fù)制,這個(gè)高并發(fā)修改時(shí),有問(wèn)題。網(wǎng)上有一部分使用案例,如果時(shí)間允許可以嘗試,但不建議生產(chǎn)使用。12.Sharding-jdbc當(dāng)當(dāng)網(wǎng)開(kāi)發(fā)的分庫(kù)分表方案,就一個(gè)jar包,通過(guò)mybatis配置分表索引號(hào),然后集成重寫(xiě)分表實(shí)現(xiàn)類(lèi)的方式進(jìn)行分表。需要寫(xiě)額外代碼,分表越多二次開(kāi)發(fā)工作量也越大。13.Rds阿里的分布式數(shù)據(jù)庫(kù),需要收費(fèi)14.TiDBPingCAP公司受GoogleSpanner/F1論文啟發(fā)而設(shè)計(jì)的開(kāi)源分布式數(shù)據(jù)庫(kù)目前使用的不多,坑比較多,不建議使用15.巨山數(shù)據(jù)庫(kù)Nosql文檔性數(shù)據(jù)庫(kù),不能直接支持

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論