<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使用分區表的好處】
    1.可以把一些歸類的數據放在一個分區中,可以減少服務器檢查數據的數量加快查詢。
    2.方便維護,通過刪除分區來刪除老的數據。
    3.分區數據可以被分布到不同的物理位置,可以做分布式有效利用多個硬盤驅動器。

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


    【查看是否支持分區】

    show variables like "%part%";

    【如何查看mysql分區信息】

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

    【查看執行一條查詢SQL會掃描的分區】

    explain partitions select * from user where id=10;

    【如何創建分區】
    1.建表時就分區:

    CREATE TABLE IF NOT EXISTS `user` ( 
       `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶ID', 
       `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名稱', 
       `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.對現有表進行分區:可以對現有表進行分區,并且會按規則自動的將表中的數據分配相應的分區中

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

    【刪除一個分區】
    (當刪除了一個分區,也同時刪除了該分區中所有的數據)
    ALTER TABLE 表名 DROP PARTITION p2;

    【分區合并】
    下面的SQL,將p201001 - p201009 合并為3個分區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)
     
       );

    【分區的拆分】
    下面的SQL,將p2010Q1 分區,拆分為s2009 與s2010 兩個分區

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

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

    posted on 2013-02-22 17:43 SIMONE 閱讀(920) 評論(0)  編輯  收藏 所屬分類: mysql
    主站蜘蛛池模板: 亚洲成色在线综合网站| 亚洲AV无码乱码在线观看| 亚洲AV无码久久精品狠狠爱浪潮| 国产精品亚洲专区无码不卡| 韩国二级毛片免费播放| 亚洲av日韩av永久在线观看| 国产麻豆免费观看91| 亚洲国产成人久久精品大牛影视| 女人张腿给男人桶视频免费版 | 亚洲国产成人无码AV在线| 青青视频观看免费99| 亚洲人精品亚洲人成在线| 18禁成年无码免费网站无遮挡| 亚洲日本乱码卡2卡3卡新区| 好吊妞在线新免费视频| 国产偷国产偷亚洲高清在线| 中文字幕亚洲一区| 日本在线免费观看| 亚洲乱码一区av春药高潮| 四虎在线免费播放| yellow免费网站| 日韩亚洲人成在线综合日本| 18级成人毛片免费观看| 亚洲人成网站999久久久综合| 全部免费毛片免费播放| 你是我的城池营垒免费看| 亚洲日本乱码一区二区在线二产线 | 天天看片天天爽_免费播放| 国产亚洲综合一区二区三区| 久久亚洲AV无码西西人体| 免费不卡在线观看AV| 亚洲欧美不卡高清在线| 中文字幕一精品亚洲无线一区| 日韩av无码久久精品免费| 亚洲色欲啪啪久久WWW综合网| 免费大片黄手机在线观看| 午夜理伦剧场免费| 亚洲1区2区3区精华液| 亚洲avav天堂av在线不卡| 妞干网免费观看视频| 国产无遮挡又黄又爽免费网站|