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;