在本次章节介绍HASH分区和KEY分区
HASH分区
HASH分区的一大特点就是可以更平均的将数据分散到各个分区中,不会像RANGE分区一样数据可能会集中在一个分区中。HASH分区简单来说是基于取模运算结果进行的分区。HASH分区分为常规分区和线性分区。但是常规分区在分区管理上过于麻烦,所以我们一般使用线性分区。
CREATE TABLE C (
ID INT NOT NULL,
NAME VARCHAR(20),
SEX VARCHAR(20)
)
PARTITION BY LINEAR HASH (ID) PARTITIONS 4;
以上操作建立了有4个HASH分区的表C,当插入记录时,会对插入的ID进行2的幂算法得到分区编号。
KEY分区
KEY分区和HASH分区类似,不过KEY分区只支持服务器提供的HASH函数,HASH分区只支持整数,KEY分区支持除BLOB ,Text类型外的其他类型作为分区键。
CREATE TABLE D (
ID INT NOT NULL,
NAME VARCHAR(20),
JOB VARCHAR(30) NOT NULL
)
PARTITION BY KEY (JOB) PARTITION 4;
以上以JOB作为分区键建立KEY分区。如果没有指定分区键,那么会默认主键为分区键,如果没有主键,则默认非空唯一键作为分区键,此时作为分区键的唯一键一定要是非空的,如果可以为空,则会出错。如果没有非空唯一键,则不能建立分区。建表时使用LINEAR KEY关键字,会和LINEAR HASH一样进行2的幂算法得到分区编号。
分区管理
合并分区:
HASH和KEY分区不能像RANGE一样直接删除分区,不过可以将分区由4个合并为2个。
ALTER TABLE D COALESCE PARTITION 2;
增加分区:
ALTER TBALE D ADD PARITION PARTITIONS 8;
以上为增加8个分区,不是增加到8个分区。这一点对于HASH分区也是如此
有关分区的操作
下面介绍几个关于查看表分区的操作
查询表中个分区名称,数据区间,记录数量,分区键
mysql> select partition_name part,
-> partition_expression expr,
-> partition_description descr,
-> table_rows
-> from
-> information_schema.partitions
-> where table_name = 'a';
查看表结构
SHOW CREATE TABLE A \G;