日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

一:為什么要分表?

  • 如果一個(gè)表的每條記錄的內(nèi)容很大,那么就需要更多的IO操作,如果字段值比較大,而使用頻率相對(duì)比較低,可以將大字段移到另一張表中,當(dāng)查詢不查大字段的時(shí)候,這樣就減少了I/O操作
  • 如果一個(gè)表的數(shù)據(jù)量很少,那么查詢就很快;如果表的數(shù)據(jù)量非常非常大,那么查詢就變的比較慢;也就是表的數(shù)據(jù)量影響這查詢的性能。
  • 表中的數(shù)據(jù)本來(lái)就有獨(dú)立性,例如分別記錄各個(gè)地區(qū)的數(shù)據(jù)或者不同時(shí)期的數(shù)據(jù),特別是有些數(shù)據(jù)常用,而另外一些數(shù)據(jù)不常用。

大表對(duì)DDL操作有一定的影響,如創(chuàng)建索引,添加字段 修改表結(jié)構(gòu)需要長(zhǎng)時(shí)間鎖表,會(huì)造成長(zhǎng)時(shí)間的主從延遲,影響正常的數(shù)據(jù)操作

當(dāng)產(chǎn)品運(yùn)營(yíng)很多年時(shí)數(shù)據(jù)量就會(huì)變的很大,如QQ的用戶表,不知道QQ有多少用戶,而且一個(gè)人可能有多個(gè)QQ號(hào),如訂單表,比如淘寶的訂單數(shù)據(jù)有多少,都是驚人的數(shù)據(jù)量。單表行數(shù)超過(guò) 500 萬(wàn)行或者單表容量超過(guò) 2GB,才推薦進(jìn)行分庫(kù)分表。

二:分割方式

分表有兩種分割方式,一種垂直分割另一種水平分割。

①:垂直分割

簡(jiǎn)單來(lái)說(shuō)垂直拆分是指數(shù)據(jù)表列的拆分,把一張列比較多的表拆分為多張表。 垂直分割一般用于拆分大字段和訪問(wèn)頻率低的字段,分離冷熱數(shù)據(jù)。

垂直分割適用于記錄不是非常多的,但是字段卻很多,這樣占用空間比較大,檢索時(shí)需要執(zhí)行大量的I/O,嚴(yán)重降低了性能,這個(gè)時(shí)候需要把大的自讀那拆分到另一個(gè)表中,并且該表與源表時(shí)一對(duì)一關(guān)系。

垂直分割比較常見(jiàn):

  • 例如博客系統(tǒng)中的文章表,比如文章tblarticles(id, titile, summary, content, userid, createtime),因?yàn)槲恼轮械膬?nèi)容content字段可能會(huì)比較長(zhǎng),如果放在tblarticles中會(huì)嚴(yán)重影響文章表的查詢速度,所以將內(nèi)容放到tblarticlesdetail(articleid, content),像文章列表只需要查詢tblarticles中的字段即可,如果想要查詢文章的具體內(nèi)容就關(guān)聯(lián)tblarticlesdetail,
  • 像我們經(jīng)常看到的tblorder表有對(duì)應(yīng)的tblorder_detail, 就是減少order字段的數(shù)量,將一些使用頻率相對(duì)較低的放在detail詳情表中

垂直拆分的優(yōu)點(diǎn): 可以使得行數(shù)據(jù)變小,在查詢時(shí)減少讀取的Block數(shù),減少I/O次數(shù)。此外,垂直分區(qū)可以簡(jiǎn)化表的結(jié)構(gòu),易于維護(hù)。 垂直拆分的缺點(diǎn): 主鍵會(huì)出現(xiàn)冗余,需要管理冗余列,并會(huì)引起Join操作,可以通過(guò)在應(yīng)用層進(jìn)行Join來(lái)解決。此外,垂直分區(qū)會(huì)讓事務(wù)變得更加復(fù)雜。

數(shù)據(jù)庫(kù)分表

 

②:水平分割

水平拆分是指數(shù)據(jù)表行的拆分,表的行數(shù)超過(guò)500萬(wàn)行或者單表容量超過(guò)10GB時(shí),查詢就會(huì)變慢,這時(shí)可以把一張的表的數(shù)據(jù)拆成多張表來(lái)存放。水平分表盡可能使每張表的數(shù)據(jù)量相當(dāng),比較均勻。舉個(gè)例子:我們可以將用戶信息表拆分成多個(gè)用戶信息表,這樣就可以避免單一表數(shù)據(jù)量過(guò)大對(duì)性能造成影響。

水品拆分可以支持非常大的數(shù)據(jù)量。需要注意的一點(diǎn)是:分表僅僅是解決了單一表數(shù)據(jù)過(guò)大的問(wèn)題,但由于表的數(shù)據(jù)還是在同一臺(tái)機(jī)器上,其實(shí)對(duì)于提升MySQL并發(fā)能力沒(méi)有什么意義,所以水品拆分最好分庫(kù)。

水平拆分能夠支持非常大的數(shù)據(jù)量存儲(chǔ),應(yīng)用端改造也少,但分片事務(wù)難以解決,跨界點(diǎn)Join性能較差,邏輯復(fù)雜。

水平拆分會(huì)給應(yīng)用增加復(fù)雜度,它通常在查詢是需要多個(gè)表名,查詢所有數(shù)據(jù)需要union操作。在許多數(shù)據(jù)庫(kù)應(yīng)用中,這種復(fù)雜性會(huì)超過(guò)它帶來(lái)的優(yōu)點(diǎn),因?yàn)橹灰饕P(guān)鍵字不大,則在索引用于查詢時(shí),表中增加2-3倍數(shù)據(jù)量,查詢時(shí)也就增加讀一個(gè)索引層的磁盤次數(shù),所以水平拆分要考慮數(shù)據(jù)量的增長(zhǎng)速度,根據(jù)實(shí)際情況決定是否需要對(duì)表進(jìn)行水平拆分。

數(shù)據(jù)庫(kù)分表

 

例如:電話賬單就可以分成多個(gè)表:最近3個(gè)月的賬單數(shù)據(jù)存在一個(gè)表,3個(gè)月前的歷史賬單存放到另一種表,超過(guò)一年的歷史賬單可以存儲(chǔ)到單獨(dú)的存儲(chǔ)介質(zhì)上,這種拆分是最常用的水平拆分方法。

水平分割標(biāo)準(zhǔn)

水平分割最重要的是找到分割的標(biāo)準(zhǔn),不同的表應(yīng)根據(jù)業(yè)務(wù)找出不同的標(biāo)準(zhǔn)

  • 用戶表可以根據(jù)用戶的手機(jī)號(hào)段進(jìn)行分割如user183、user150、user153、user189等,每個(gè)號(hào)段就是一張表
  • 用戶表也可以根據(jù)用戶的id進(jìn)行分割,加入分3張表user0,user1,user2,如果用戶的id%3=0就查詢user0表,如果用戶的id%3=1就查詢user1表
  • 對(duì)于訂單表可以按照訂單的時(shí)間進(jìn)行分表

三 數(shù)據(jù)庫(kù)分片方案

  • 客戶端代理: 分片邏輯在應(yīng)用端,封裝在jar包中,通過(guò)修改或者封裝JDBC層來(lái)實(shí)現(xiàn)。 當(dāng)當(dāng)網(wǎng)的 Sharding-JDBC 、阿里的TDDL是兩種比較常用的實(shí)現(xiàn)。
  • 中間件代理: 在應(yīng)用和數(shù)據(jù)中間加了一個(gè)代理層。分片邏輯統(tǒng)一維護(hù)在中間件服務(wù)中。 我們現(xiàn)在談的 Mycat、360的Atlas、網(wǎng)易的DDB等等都是這種架構(gòu)的實(shí)現(xiàn)。

四:中間表查詢:大表統(tǒng)計(jì)

創(chuàng)建一個(gè)中間表,中間表的結(jié)構(gòu)和原始表結(jié)構(gòu)一樣,或多字段,將原始表中的部分?jǐn)?shù)據(jù)轉(zhuǎn)移到中間表,然后對(duì)中間表進(jìn)行統(tǒng)計(jì)。 中間表復(fù)制源表部分?jǐn)?shù)據(jù),并且與源表相隔離,在中間表上做統(tǒng)計(jì)查詢不會(huì)對(duì)在線應(yīng)用產(chǎn)生負(fù)面影響 中間表上可以靈活的添加索引增加臨時(shí)用的新字段,從而達(dá)到提高統(tǒng)計(jì)查詢效率和輔助統(tǒng)計(jì)查詢作用。

分享到:
標(biāo)簽:數(shù)據(jù)庫(kù)
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定