四种分区算法 hash key list range
依据业务逻辑分区:range,list
平均分配:hash,key
取余的算法(hash,key),增加分区,减少分区,数据不会收到影响,仅仅是重新分配数据到不同的分区.
条件的分区,增加没关系,删除分区,导致分区内的数据一同消失,类似删除表!
Demo
创建表时,需要指定当前表的分区,及其对于的分区算法:
最常用的分区逻辑,使用主键将数据平均分配到10个区中.hash算法就可以做到!
Drop table if exists‘zhangc’;
Create table‘zhangc’
(
Id int auto_increment,
Name varchar(32),
Birthday date,
Intro text,
Primary key(id)
)charset=utf8
利用id字段,对10取余(hash是取余算法)
Partition by hash(id)Partitions 10;
插入或其他的操作,常规操作即可,不需要有语法的改变,记录就被依据算法存储在某个区内
hash,使用给定的一个整数,对分区数量取余分区,hash(分区表达式),应该整数.
key,使用任意字段,对分区数据量取余分区,不要求是整数字段。MySQL会依据给定的字段的值,自己计算整数,去取余!
☆注意:分区字段要加入到primary key中.
range, 利用给定的范围条件,进行分区
list, 利用给定的列表值,进行条件分区
管理分区
取余(hash,key),增减分区数量即可.
增加分区数量
add partition partitions N
增加N个分区.
Alter table‘zhangc’add partition partitions 5;
减少数量(合并分区)
coalesce partition N
减少N个分区.
Alter table‘zhangc’coalescepartition 5;
网友评论