mysql分区技术

mysql分区技术在物理存储上使数据表进行分离,逻辑上还是一张表

使用 show plugins 查看mysql 是否支持partiton

mysql5.1以上版本有5种分区类型

RANGE 分区

基于属于一个给定连续区间的列值,把多行分配给分区。

PARTITION BY RANGE (store_id) (
    PARTITION p0 VALUES LESS THAN (6),
    PARTITION p1 VALUES LESS THAN (11),
    PARTITION p2 VALUES LESS THAN (16),
    PARTITION p3 VALUES LESS THAN (21)
);

LIST 分区

类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。

PARTITION BY LIST(store_id)
    PARTITION pNorth VALUES IN (3,5,6,9,17),
    PARTITION pEast VALUES IN (1,2,10,11,19,20),
    PARTITION pWest VALUES IN (4,12,13,14,18),
    PARTITION pCentral VALUES IN (7,8,15,16)
);

HASH分区

基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。

create table t1(

)partiton by hash(字段名);

partitions 5;#5个分区

KEY 分区

类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值

PARTITION BY LINEAR KEY (col1)
PARTITIONS 3;

分区之后,不加索引的情况下,分区后的查询会比不分区块90%

Innodb 要想实现分区。必须使表使用独立表空间。

需要在my.cnf配置文件中加入

innnodb_file_per_table=1;

 

posted @ 2014-10-20 22:17  闲云-野鹤  阅读(208)  评论(0编辑  收藏  举报