<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    mysql分表,分區的區別和聯系

    一,什么是mysql分表,分區

    什么是分表,從表面意思上看呢,就是把一張表分成N多個小表,具體請看mysql分表的3種方法

    什么是分區,分區呢就是把一張表的數據分成N多個區塊,這些區塊可以在同一個磁盤上,也可以在不同的磁盤上,具體請參考mysql分區功能詳細介紹,以及實例

    二,mysql分表和分區有什么區別呢

    1,實現方式上

    a),mysql的分表是真正的分表,一張表分成很多表后,每一個小表都是完正的一張表,都對應三個文件,一個.MYD數據文件,.MYI索引文件,.frm表結構文件。

    1. [root@BlackGhost test]# ls |grep user  
    2. alluser.MRG  
    3. alluser.frm  
    4. user1.MYD  
    5. user1.MYI  
    6. user1.frm  
    7. user2.MYD  
    8. user2.MYI  
    9. user2.frm  
    [root@BlackGhost test]# ls |grep user alluser.MRG alluser.frm user1.MYD user1.MYI user1.frm user2.MYD user2.MYI user2.frm

    簡單說明一下,上面的分表呢是利用了merge存儲引擎(分表的一種),alluser是總表,下面有二個分表,user1,user2。他們二個都是獨立的表,取數據的時候,我們可以通過總表來取。這里總表是沒有.MYD,.MYI這二個文件的,也就是說,總表他不是一張表,沒有數據,數據都放在分表里面。我們來看看.MRG到底是什么東西

    1. [root@BlackGhost test]# cat alluser.MRG |more  
    2. user1  
    3. user2  
    4. #INSERT_METHOD=LAST  
    [root@BlackGhost test]# cat alluser.MRG |more user1 user2 #INSERT_METHOD=LAST

    從上面我們可以看出,alluser.MRG里面就存了一些分表的關系,以及插入數據的方式。可以把總表理解成一個外殼,或者是聯接池。

    b),分區不一樣,一張大表進行分區后,他還是一張表,不會變成二張表,但是他存放數據的區塊變多了。

    1. [root@BlackGhost test]# ls |grep aa  
    2. aa#P#p1.MYD  
    3. aa#P#p1.MYI  
    4. aa#P#p3.MYD  
    5. aa#P#p3.MYI  
    6. aa.frm  
    7. aa.par  
    [root@BlackGhost test]# ls |grep aa aa#P#p1.MYD aa#P#p1.MYI aa#P#p3.MYD aa#P#p3.MYI aa.frm aa.par

    從上面我們可以看出,aa這張表,分為二個區,p1和p3,本來是三個區,被我刪了一個區。我們都知道一張表對應三個文件.MYD,.MYI,.frm。分區呢根據一定的規則把數據文件和索引文件進行了分割,還多出了一個.par文件,打開.par文件后你可以看出他記錄了,這張表的分區信息,根分表中的.MRG有點像。分區后,還是一張,而不是多張表。

    2,數據處理上

    a),分表后,數據都是存放在分表里,總表只是一個外殼,存取數據發生在一個一個的分表里面。看下面的例子:

    select * from alluser where id='12'表面上看,是對表alluser進行操作的,其實不是的。是對alluser里面的分表進行了操作。

    b),分區呢,不存在分表的概念,分區只不過把存放數據的文件分成了許多小塊,分區后的表呢,還是一張表。數據處理還是由自己來完成。

    3,提高性能上

    a),分表后,單表的并發能力提高了,磁盤I/O性能也提高了。并發能力為什么提高了呢,因為查尋一次所花的時間變短了,如果出現高并發的話,總表可以根據不同的查詢,將并發壓力分到不同的小表里面。磁盤I/O性能怎么搞高了呢,本來一個非常大的.MYD文件現在也分攤到各個小表的.MYD中去了。

    b),mysql提出了分區的概念,我覺得就想突破磁盤I/O瓶頸,想提高磁盤的讀寫能力,來增加mysql性能。
    在這一點上,分區和分表的測重點不同,分表重點是存取數據時,如何提高mysql并發能力上;而分區呢,如何突破磁盤的讀寫能力,從而達到提高mysql性能的目的。

    4),實現的難易度上

    a),分表的方法有很多,用merge來分表,是最簡單的一種方式。這種方式根分區難易度差不多,并且對程序代碼來說可以做到透明的。如果是用其他分表方式就比分區麻煩了。

    b),分區實現是比較簡單的,建立分區表,根建平常的表沒什么區別,并且對開代碼端來說是透明的。

    三,mysql分表和分區有什么聯系呢

    1,都能提高mysql的性高,在高并發狀態下都有一個良好的表面。

    2,分表和分區不矛盾,可以相互配合的,對于那些大訪問量,并且表數據比較多的表,我們可以采取分表和分區結合的方式(如果merge這種分表方式,不能和分區配合的話,可以用其他的分表試),訪問量不大,但是表數據很多的表,我們可以采取分區的方式等。

    posted on 2013-05-07 09:19 paulwong 閱讀(457) 評論(0)  編輯  收藏 所屬分類: MYSQL

    主站蜘蛛池模板: jjizz全部免费看片| 国产乱子伦精品免费视频| 99re6热视频精品免费观看| 中文字幕亚洲一区二区三区 | 美女黄网站人色视频免费国产| 亚洲视频中文字幕在线| 久久99国产乱子伦精品免费| 久久精品国产亚洲av麻豆小说 | 亚洲AV无码一区二区乱子伦| 一级成人毛片免费观看| 亚洲五月午夜免费在线视频| 一级毛片一级毛片免费毛片| 亚洲日产无码中文字幕| 麻豆精品成人免费国产片| 国产国拍亚洲精品mv在线观看 | 亚洲丝袜美腿视频| 97热久久免费频精品99| 亚洲影院天堂中文av色| 国产一级做a爱免费视频| 男女作爱免费网站| 日韩亚洲一区二区三区| 久视频精品免费观看99| 亚洲伊人久久大香线蕉AV| 亚洲成?Ⅴ人在线观看无码| 亚洲精品黄色视频在线观看免费资源| 久久久久亚洲精品男人的天堂| 永久免费A∨片在线观看| 亚洲成a人片7777| 国内自产拍自a免费毛片| 性生大片视频免费观看一级| 亚洲日韩v无码中文字幕| 亚洲一级免费毛片| 处破女第一次亚洲18分钟| 亚洲精品无码国产| 免费国产作爱视频网站| 暖暖免费中文在线日本| 午夜亚洲国产理论秋霞| 免费理论片51人人看电影| 中文字幕无线码中文字幕免费| 亚洲成人黄色网址| 亚洲国产成人爱av在线播放|