创建分区表
CREATE TABLE k1 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20)
)
PARTITION BY KEY()
PARTITIONS 2;
键分区(Key)与哈希分区(Hash)的区别
- KEY仅接受零个或多个列名的列表。
- 如果表有一个主键,则用作分区键的任何列都必须包含表的主键的一部分或全部。
- 如果没有将列名指定为分区键,则使用表的主键(如果有)。
- 如果没有主键,但是有一个唯一键,则将唯一键用于分区键。
但是,如果唯一键列未定义为 NOT NULL,则建表语句将失败。
查看分区信息
如果指定分区数为2,则分区名称为:p0~p1
select table_schema, table_name, partition_name,partition_method,partition_expression
from information_schema.PARTITIONS
where table_name ='k1';
分区号分配策略
基于mysql内部哈希函数,如md5(),password();
写入测试数据
insert into k1(id,name) values(1,'c1');
insert into k1(id,name) values(2,'c2');
insert into k1(id,name) values(3,'c3');
insert into k1(id,name) values(4,'c4');
-- 查询数据
select * from k1;
select * from k1 partition(p0);
select * from k1 partition(p1);
使用unique键创建key分区
CREATE TABLE k2 (
id INT NOT NULL,
name VARCHAR(20),
UNIQUE KEY (id)
)
PARTITION BY KEY()
PARTITIONS 2;
参考
https://dev.mysql.com/doc/refman/8.0/en/partitioning-key.html
来源:CSDN
作者:huryer
链接:https://blog.csdn.net/huryer/article/details/103943455