介绍

key分区和hash分区相似,但是key分区支持除text和blob之外的所有数据类型的分区,而hash分区只支持数字分区,key分区不允许使用用户自定义的表达式进行分区,key分区使用系统提供的hash函数进行分区。当表中存在主键或者唯一键时,如果创建key分区时没有指定字段系统默认会首选主键列作为分区字列,如果不存在主键列会选择非空唯一键列作为分区列,注意唯一列作为分区列唯一列不能为null。

一、常规key

1.创建分区

create table tb_key (
    id int ,
    var char(32) 
)
partition by key(var)
partitions 10;
select partition_name,partition_method,partition_expression,partition_description,table_rows,subpartition_name,subpartition_method,subpartition_expression 
from information_schema.partitions where table_schema=schema() and table_name='tb_key';
insert into tb_key() values(1,'星期一'),(2,'1998-10-19'),(3,'new'),(4,'非常好'),(5,'5');

二、linear key

同样key分区也存在线性key分区,概念和线性hash分区一样。

1.创建分区

create table tb_keyline (
    id int not null,
    var char(5)
)
partition by linear key (var)
partitions 3;

三、分区管理

key分区管理和hash分区管理是一样的,只能删除和增加分区,这里不再做详细介绍。

1.删除2个分区

alter table tb_key coalesce partition 2;

2.增加三个分区

alter table tb_key add partition partitions 3;

四、移除表的分区

alter table tablename
remove partitioning ;

注意:使用remove移除分区是仅仅移除分区的定义,并不会删除数据和drop partition不一样,后者会连同数据一起删除

分区系列文章:

range分区:

column分区:

list分区:

hash分区:

key分区:

子分区:

指定各分区路径:

分区索引以及分区介绍总结:

总结

key分区和hash分区类似,在处理大量数据记录时能有效的分散数据热点。

到此这篇关于mysql分区之key分区的文章就介绍到这了,更多相关mysql key分区 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!