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

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

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

    posts - 495,comments - 227,trackbacks - 0
    http://www.0773linji.com/web/mysql_partitions.html

    【MySQL使用分區(qū)表的好處】
    1.可以把一些歸類(lèi)的數(shù)據(jù)放在一個(gè)分區(qū)中,可以減少服務(wù)器檢查數(shù)據(jù)的數(shù)量加快查詢(xún)。
    2.方便維護(hù),通過(guò)刪除分區(qū)來(lái)刪除老的數(shù)據(jù)。
    3.分區(qū)數(shù)據(jù)可以被分布到不同的物理位置,可以做分布式有效利用多個(gè)硬盤(pán)驅(qū)動(dòng)器。

    【MySQL可以建立四種分區(qū)類(lèi)型的分區(qū)】
    RANGE 分區(qū):基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。
    LIST 分區(qū):類(lèi)似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。
    HASH分區(qū):基于用戶(hù)定義的表達(dá)式的返回值來(lái)進(jìn)行選擇的分區(qū),該表達(dá)式使用將要插入到表中的這些行的列值進(jìn)行計(jì)算。這個(gè)函數(shù)可以包含MySQL 中有效的、產(chǎn)生非負(fù)整數(shù)值的任何表達(dá)式。
    KEY 分區(qū):類(lèi)似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL 服務(wù)器提供其自身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。
    一般用得多的是range分區(qū)和list分區(qū)。


    【查看是否支持分區(qū)】

    show variables like "%part%";

    【如何查看mysql分區(qū)信息】

    select * from INFORMATION_SCHEMA.PARTITIONS where table_name='user'; (這里查看user表的分區(qū)信息)

    【查看執(zhí)行一條查詢(xún)SQL會(huì)掃描的分區(qū)】

    explain partitions select * from user where id=10;

    【如何創(chuàng)建分區(qū)】
    1.建表時(shí)就分區(qū):

    CREATE TABLE IF NOT EXISTS `user` ( 
       `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶(hù)ID', 
       `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名稱(chēng)', 
       `sex` int(1) NOT NULL DEFAULT '0' COMMENT '0為男,1為女', 
       PRIMARY KEY (`id`) 
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 
    PARTITION BY RANGE (id) ( 
         PARTITION p0 VALUES LESS THAN (3), 
         PARTITION p1 VALUES LESS THAN (6), 
         PARTITION p2 VALUES LESS THAN (9), 
         PARTITION p3 VALUES LESS THAN (12), 
         PARTITION p4 VALUES LESS THAN MAXVALUE 
    );

    2.對(duì)現(xiàn)有表進(jìn)行分區(qū):可以對(duì)現(xiàn)有表進(jìn)行分區(qū),并且會(huì)按規(guī)則自動(dòng)的將表中的數(shù)據(jù)分配相應(yīng)的分區(qū)中

    alter table 表名 partition by RANGE(字段) 
    (PARTITION p1 VALUES less than (1), 
    PARTITION p2 VALUES less than (5), 
    PARTITION p3 VALUES less than MAXVALUE);

    【刪除一個(gè)分區(qū)】
    (當(dāng)刪除了一個(gè)分區(qū),也同時(shí)刪除了該分區(qū)中所有的數(shù)據(jù))
    ALTER TABLE 表名 DROP PARTITION p2;

    【分區(qū)合并】
    下面的SQL,將p201001 - p201009 合并為3個(gè)分區(qū)p2010Q1 - p2010Q3

    ALTER TABLE sale_data
        REORGANIZE PARTITION p201001,p201002,p201003,
     
        p201004,p201005,p201006,
     
        p201007,p201008,p201009 INTO
     
        (
     
        PARTITION p2010Q1 VALUES LESS THAN (201004),
     
        PARTITION p2010Q2 VALUES LESS THAN (201007),
     
        PARTITION p2010Q3 VALUES LESS THAN (201010)
     
       );

    【分區(qū)的拆分】
    下面的SQL,將p2010Q1 分區(qū),拆分為s2009 與s2010 兩個(gè)分區(qū)

    ALTER TABLE sale_data REORGANIZE PARTITION p2010Q1 INTO (
     
       PARTITION s2009 VALUES LESS THAN (201001),
                
        PARTITION s2010 VALUES LESS THAN (201004)
     
       );

    【分區(qū)索引的局限】
    1.所有分區(qū)都要使用同樣的引擎。
    2.分區(qū)表的每一個(gè)唯一索引必須包含由分區(qū)函數(shù)引用的列。
    3.mysql能避免查詢(xún)所有的分區(qū),但仍然鎖定了所有分區(qū)。
    4.分區(qū)函數(shù)能使用的函數(shù)和表達(dá)式有限,例如函數(shù)有上面的4種。
    5.分區(qū)不支持外鍵。
    6.不能使用LOAD INDEX INTO CACHE
    7.分區(qū)并不能總是改善性能,要進(jìn)行性能評(píng)測(cè)。

    posted on 2013-02-22 17:43 SIMONE 閱讀(920) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): mysql
    主站蜘蛛池模板: 亚洲变态另类一区二区三区 | 久久aⅴ免费观看| 免费国产小视频在线观看| 亚洲日韩国产AV无码无码精品| 一个人在线观看视频免费| 亚洲欧洲日韩极速播放| 四虎成人免费大片在线| 日本特黄特色AAA大片免费| 亚洲欧洲日产国码一级毛片| yellow视频免费看| 亚洲av无码乱码国产精品| 亚洲视频在线免费观看| 亚洲国产成人精品无码一区二区| 4hu四虎最新免费地址| 亚洲中文字幕久久无码| 亚洲精品乱码久久久久久蜜桃| 久久最新免费视频| 国产成人无码综合亚洲日韩 | 亚洲精品无码久久久久久| 国产乱子伦精品免费女| CAOPORM国产精品视频免费| 亚洲精品国产精品乱码视色| 日本最新免费网站| 亚洲av午夜国产精品无码中文字| 亚洲精品网站在线观看不卡无广告| 中文字幕无码毛片免费看| 亚洲精品熟女国产| 国产男女猛烈无遮挡免费网站 | 国产成人综合亚洲一区| 亚洲自偷自偷在线制服| 成人免费观看一区二区| 免费人成视频在线观看免费| 亚洲国产成人高清在线观看| 国产成人免费高清激情视频| 一级视频免费观看| 亚洲专区一路线二| 国产性爱在线观看亚洲黄色一级片 | 久久久久女教师免费一区| 亚洲AV无码成人专区| 亚洲人成在线播放网站| 日韩一区二区在线免费观看|