MySql分区学习总结三:HASH,KEY

在本次章节介绍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;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Master_Kin/article/details/84728110