亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

mysql分表方法-----MRG_MyISAM引擎分表法

系統(tǒng) 2447 0

一般來說,當我們的數據庫的數據超過了100w記錄的時候就應該考慮分表或者分區(qū)了, 這次我來詳細說說分表的一些方法。目前我所知道的方法都是MYISAM的,INNODB如何做分表并且保留事務和外鍵,我還不是很了解。

首先,我們需要想好到底分多少個表,前提當然是滿足應用。這里我使用了一個比較簡單的分表方法,就是根據自增id的尾數來分,也就是說分0-9一共10個表,其取值也很好做,就是對10進行取模。另外,還可以根據某一字段的md5值取其中幾位進行分表,這樣的話,可以分的表就很多了。

好了,先來創(chuàng)建表吧,代碼如下

?

?

        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_0` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_1` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_2` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_3` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_4` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_5` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_6` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_7` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_8` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
        
           utf8 COLLATE utf8_general_ci  

  


        
        
          CREATE
        
        
          TABLE
        
        
           `test`.`article_9` (  

`id` 
        
        
          BIGINT
        
        ( 
        
          20
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`subject` 
        
        
          VARCHAR
        
        ( 
        
          200
        
         ) 
        
          NOT
        
        
          NULL
        
        
           ,  

`content` 
        
        
          TEXT
        
        
          NOT
        
        
          NULL
        
        
           ,  


        
        
          PRIMARY
        
        
          KEY
        
        
           ( `id` )  

) ENGINE 
        
        
          =
        
         MYISAM 
        
          CHARACTER
        
        
          SET
        
         utf8 COLLATE utf8_general_ci   
      

?

?好了10個表創(chuàng)建完畢了,需要注意的是, 這里的id不能設為自增,而且所有的表結構必須一致,包括結構,類型,長度,字段的順序都必須一致 那么對于這個id如何取得呢?后面我會詳細說明。現(xiàn)在,我們需要一個合并表,用于查詢,創(chuàng)建合并表的代碼如下

      
        CREATE
      
      
        TABLE
      
      
         `test`.`article` (  

`id` 
      
      
        BIGINT
      
      ( 
      
        20
      
       ) 
      
        NOT
      
      
        NULL
      
      
         ,  

`subject` 
      
      
        VARCHAR
      
      ( 
      
        200
      
       ) 
      
        NOT
      
      
        NULL
      
      
         ,  

`content` 
      
      
        TEXT
      
      
        NOT
      
      
        NULL
      
      
         ,  


      
      
        PRIMARY
      
      
        KEY
      
      
         ( `id` )  

) ENGINE
      
      
        =
      
      MRG_MyISAM 
      
        DEFAULT
      
       CHARSET
      
        =
      
      utf8 INSERT_METHOD
      
        =
      
      
        0
      
      
        UNION
      
      
        =
      
      (`article_0`,`article_1`,`article_2`,`article_3`,`article_4`,`article_5`,`article_6`,`article_7`,`article_8`,`article_9`); 
    

? ?? ?這里INSERT_METHOD=0在某些版本可能不工作,需要改成INSERT_METHOD=NO

注意,合并表也必須和前面的表有相同的結構,類型,長度,包括字段的順序都必須一致 這里的INSERT_METHOD=0表示不允許對本表進行insert操作。好了,當需要查詢的時候, 我們可以只對article這個表進行操作就可以了,也就是說這個表僅僅只能進行select操作

那么對于插入也就是insert操作應該如何來搞呢,首先就是獲取唯一的id了,這里就還需要一個表來專門創(chuàng)建id,代碼如下

      
        CREATE
      
      
        TABLE
      
      
         `test`.`create_id` (  

`id` 
      
      
        BIGINT
      
      ( 
      
        20
      
       ) 
      
        NOT
      
      
        NULL
      
       AUTO_INCREMENT 
      
        PRIMARY
      
      
        KEY
      
      
          

) ENGINE 
      
      
        =
      
       MYISAM   
    

??也?就是說,當我們需要插入數據的時候,必須由這個表來產生id值,我的php代碼的方法如下

      
        function
      
      
         get_AI_ID() {  

    
      
      
        $sql
      
        = "insert into create_id (id) values('')"
      
        ;  

    
      
      
        $this
      
      ->db->query(
      
        $sql
      
      
        );  

    
      
      
        return
      
      
        $this
      
      ->db->
      
        insertID();  

}   
      
    

? ? 好了,現(xiàn)在假設我們要插入一條數據了,應該怎么操作呢?還是繼續(xù)看代碼吧

            
              function
            
            
               new_Article() {  

    
            
            
              $id
            
              = 
            
              $this
            
            ->
            
              get_AI_ID();  

    
            
            
              $table_name
            
             = 
            
              $this
            
            ->get_Table_Name(
            
              $id
            
            
              );  

    
            
            
              $sql
            
             = "insert into {
            
              $table_name
            
            } (id,subject,content) values('{
            
              $id
            
            }','測試標題','測試內容')"
            
              ;  

    
            
            
              $this
            
            ->db->query(
            
              $sql
            
            
              );  

}  
              

/* * * 用于根據id獲取表名 */ function get_Table_Name( $id ) { return 'article_'. intval ( $id )%10 ; }

其實很簡單的,對吧,就是先獲取id,然后根據id獲取應該插入到哪個表,然后就很簡單了。

對于update的操作我想應該不需要再說了吧,無非是有了id,然后獲取表名,然后進行update操作就好了。

mysql分表方法-----MRG_MyISAM引擎分表法


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产麻豆高清视频在线第一页 | 午夜精品久久影院蜜桃 | 欧美日韩有码 | 日本一级毛片不卡免费 | 四虎影视最新网址 | 性新婚a大黄毛片 | www.涩| 久久美利坚| 五月婷婷精品 | 国内精品久久久久久西瓜色吧 | 不卡一二区| 久久在线视频免费观看 | 国产欧美一区二区三区在线 | 欧美做爱毛片 | 欧美乱爱 | 91一级片| 久99频这里只精品23热 视频 | 国产a级一级久久毛片 | 亚洲最大成人网 色香蕉 | 国产在线视频你懂得 | 免费h| 亚洲成年人视频 | 亚洲精品日韩中文字幕久久久 | 日本一本久 | 青青热久久国产久精品秒播 | 97在线免费观看视频 | 999人在线精品播放视频 | xxx大片免费视频 | 国产欧美精品一区二区 | 六月婷婷色| 亚州综合 | 天天久久| www.中文字幕.com | 久久国产精品范冰啊 | 成人网视频在线观看免费 | 成人亚洲在线 | 日韩精品成人在线 | 看全色黄大色黄大片 视 | 亚洲欧美日产综合一区二区三区 | 久久久久免费视频 | 夜夜穞狠狠穞 |