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

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

系統(tǒng) 2918 0

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

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

好了,先來創(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不能設(shè)為自增,而且所有的表結(jié)構(gòu)必須一致,包括結(jié)構(gòu),類型,長度,字段的順序都必須一致 那么對于這個id如何取得呢?后面我會詳細(xì)說明。現(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

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

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

      
        CREATE
      
      
        TABLE
      
      
         `test`.`create_id` (  

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

) ENGINE 
      
      
        =
      
       MYISAM   
    

??也?就是說,當(dāng)我們需要插入數(shù)據(jù)的時候,必須由這個表來產(chǎn)生id值,我的php代碼的方法如下

      
        function
      
      
         get_AI_ID() {  

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

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

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

}   
      
    

? ? 好了,現(xiàn)在假設(shè)我們要插入一條數(shù)據(jù)了,應(yīng)該怎么操作呢?還是繼續(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
            
            }','測試標(biāo)題','測試內(nèi)容')"
            
              ;  

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

}  
              

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

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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品欧美一区二区在线看 | 狠狠色噜噜狠狠狠狠98 | 四虎永久免费网站免费观看 | 91久久天天躁狠狠躁夜夜 | 国产日产亚洲精品 | 玖玖在线免费视频 | 成人9久久国产精品品 | 亚色视频在线观看 | 日韩五月天 | 亚欧洲精品bb | 97在线观免费视频观看 | 女人大毛片一级毛片一 | 人人澡人人干 | 日韩欧美中文在线 | 亚洲人成影院在线高清 | 网站黄色在线观看 | 国产91av视频| 奇米影视久久777中文字幕 | 欧美日视频 | 国产自精品在线 | 国产一区二区三区免费 | 777精品成人影院 | 高清国产精品入口麻豆 | 日韩午夜在线视频不卡片 | 美国一级毛片片aa成人 | 四虎影院在线免费观看视频 | 欧美一级在线播放 | 精品久久视频 | 狠狠影视| 四虎永久免费在线 | 国产精品久久久久尤物 | 精品久久久久久中文字幕欧美 | 欧美精欧美乱码一二三四区 | 成人影院高清在线观看免费网站 | 青青草a| 91精品国产综合久久精品 | 在线免费黄色网址 | 国产香蕉视频在线 | 亚洲在线国产 | 国产精品视频ccav | 亚洲欧洲尹人香蕉综合 |