《MYSQL數(shù)據(jù)庫mysql分表和分區(qū)的區(qū)別淺析》要點(diǎn):
本文介紹了MYSQL數(shù)據(jù)庫mysql分表和分區(qū)的區(qū)別淺析,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
MYSQL必讀一、什么是mysql分表和分區(qū)
MYSQL必讀什么是分表,從表面意思上看呢,就是把一張表分成N多個(gè)小表
MYSQL必讀什么是分區(qū),分區(qū)呢就是把一張表的數(shù)據(jù)分成N多個(gè)區(qū)塊,這些區(qū)塊可以在同一個(gè)磁盤上,也可以在不同的磁盤上
MYSQL必讀二、mysql分表和分區(qū)有什么區(qū)別呢
MYSQL必讀1、實(shí)現(xiàn)方式上
MYSQL必讀a)mysql的分表是真正的分表,一張表分成很多表后,每一個(gè)小表都是完正的一張表,都對(duì)應(yīng)三個(gè)文件,一個(gè).MYD數(shù)據(jù)文件,.MYI索引文件,.frm表結(jié)構(gòu)文件.
MYSQL必讀簡(jiǎn)單說明一下,上面的分表呢是利用了merge存儲(chǔ)引擎(分表的一種),alluser 是總表,下面有二個(gè)分表,user1,user2.他們二個(gè)都是獨(dú)立的表,取數(shù)據(jù)的時(shí)候,我們可以通過總表來取.這里總表是沒有.MYD,.MYI這二個(gè) 文件的,也就是說,總表他不是一張表,沒有數(shù)據(jù),數(shù)據(jù)都放在分表里面.我們來看看.MRG到底是什么東西
MYSQL必讀從上面我們可以看出,alluser.MRG里面就存了一些分表的關(guān)系,以及插入數(shù)據(jù)的方式.可以把總表理解成一個(gè)外殼,或者是聯(lián)接池.
MYSQL必讀
b)分區(qū)不一樣,一張大表進(jìn)行分區(qū)后,他還是一張表,不會(huì)變成二張表,但是他存放數(shù)據(jù)的區(qū)塊變多了.
MYSQL必讀從上面我們可以看出,aa這張表,分為二個(gè)區(qū),p1和p3,本來是三個(gè)區(qū),被我刪了一個(gè)區(qū).我們都知道一張表對(duì)應(yīng)三個(gè)文 件.MYD,.MYI,.frm.分區(qū)呢根據(jù)一定的規(guī)則把數(shù)據(jù)文件和索引文件進(jìn)行了分割,還多出了一個(gè).par文件,打開.par文件后你可以看出他記錄 了,這張表的分區(qū)信息,根分表中的.MRG有點(diǎn)像.分區(qū)后,還是一張,而不是多張表.
MYSQL必讀2、數(shù)據(jù)處理上
MYSQL必讀a)分表后,數(shù)據(jù)都是存放在分表里,總表只是一個(gè)外殼,存取數(shù)據(jù)發(fā)生在一個(gè)一個(gè)的分表里面.看下面的例子:
MYSQL必讀select * from alluser where id='12'表面上看,是對(duì)表alluser進(jìn)行操作的,其實(shí)不是的.是對(duì)alluser里面的分表進(jìn)行了操作.
MYSQL必讀b)分區(qū)呢,不存在分表的概念,分區(qū)只不過把存放數(shù)據(jù)的文件分成了許多小塊,分區(qū)后的表呢,還是一張表.數(shù)據(jù)處理還是由自己來完成.
MYSQL必讀3、提高性能上
MYSQL必讀a)分表后,單表的并發(fā)能力提高了,磁盤I/O性能也提高了.并發(fā)能力為什么提高了 呢,因?yàn)椴閷ひ淮嗡ǖ臅r(shí)間變短了,如果出現(xiàn)高并發(fā)的話,總表可以根據(jù)不同的查詢,將并發(fā)壓力分到不同的小表里面.磁盤I/O性能怎么搞高了呢,本來一個(gè) 非常大的.MYD文件現(xiàn)在也分?jǐn)偟礁鱾€(gè)小表的.MYD中去了.
MYSQL必讀b)mysql提出了分區(qū)的概念,我覺得就想突破磁盤I/O瓶頸,想提高磁盤的讀寫能力,來增加mysql性能.
在這一點(diǎn)上,分區(qū)和分表的測(cè)重點(diǎn)不同,分表重點(diǎn)是存取數(shù)據(jù)時(shí),如何提高mysql并發(fā)能力上;而分區(qū)呢,如何突破磁盤的讀寫能力,從而達(dá)到提高mysql性能的目的.
MYSQL必讀4、實(shí)現(xiàn)的難易度上
MYSQL必讀a)分表的方法有很多,用merge來分表,是最簡(jiǎn)單的一種方式.這種方式根分區(qū)難易度差不多,并且對(duì)程序代碼來說可以做到透明的.如果是用其他分表方式就比分區(qū)麻煩了.
MYSQL必讀b)分區(qū)實(shí)現(xiàn)是比較簡(jiǎn)單的,建立分區(qū)表,根建平常的表沒什么區(qū)別,并且對(duì)開代碼端來說是透明的.
MYSQL必讀三、mysql分表和分區(qū)有什么聯(lián)系呢
MYSQL必讀1,都能提高mysql的性高,在高并發(fā)狀態(tài)下都有一個(gè)良好的表面.
MYSQL必讀2,分表和分區(qū)不矛盾,可以相互配合的,對(duì)于那些大拜訪量,并且表數(shù)據(jù)比較多的表,我們可以采取分表和分區(qū)結(jié)合的方式(如果merge這種分表方式,不能和分區(qū)配合的話,可以用其他的分表試),拜訪量不大,但是表數(shù)據(jù)很多的表,我們可以采取分區(qū)的方式等.
維易PHP培訓(xùn)學(xué)院每天發(fā)布《MYSQL數(shù)據(jù)庫mysql分表和分區(qū)的區(qū)別淺析》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/13348.html