暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

手动创建一级分区

酷数据库 2023-11-23
100

创建一级分区

创建HASH一级分区

使用分区函数

使用单列分区键datetime并通过分区函数to_days转换为日期天数,再进行哈希分区,同时指定分区数目为8:


CREATE TABLE tb_h_fn(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY HASH(TO_DAYS(birthday)) 
PARTITIONS 8;

不用分区函数

使用单列分区键ID进行哈希分区,并指定分区数目为8:


CREATE TABLE tb_h(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY HASH(id) 
PARTITIONS 8;

使用向量分区键(id,bid)进行哈希分区,并指定分区数目为8:

说明

id与bid同时参与哈希值计算,等值查询必须同时带上id与bid等值条件,才能命中分区裁剪。


CREATE TABLE tb_h2(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY HASH(id,bid) 
PARTITIONS 8;

创建KEY一级分区

使用向量分区键(id,bid)按Key分区,并指定分区数目为8:

说明

點认第1个列参与哈希值计算,等值查询只须同时前缀列等值条件,即可命中分区裁剪。


CREATE TABLE tb_k(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY KEY(id, bid) 
PARTITIONS 8;

创建RANGE一级分区

使用分区函数

使用单列分区键datetime并通过分区函数to_days转换为日期天数,再进行范围分区:


CREATE TABLE tb_r_fn(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY RANGE(TO_DAYS(birthday))
(
   PARTITION p1 VALUES LESS THAN(TO_DAYS('2020-01-01')),
   PARTITION p2 VALUES LESS THAN(TO_DAYS('2021-01-01')),
   PARTITION p3 VALUES LESS THAN(TO_DAYS('2022-01-01')),
   PARTITION pm VALUES LESS THAN(MAXVALUE)
)

不用分区函数

使用单列分区键id进行范围分区,并指定分区数目为8:


CREATE TABLE tb_r(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY RANGE(id)
(
   PARTITION p1 VALUES LESS THAN(1000),
   PARTITION p2 VALUES LESS THAN(2000),
   PARTITION p3 VALUES LESS THAN(3000),
   PARTITION pm VALUES LESS THAN(MAXVALUE)
)

创建RANGE COLUMNS一级分区

使用向量分区键(birthday,id)按范围分区:


CREATE TABLE tb_rc(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY RANGE COLUMNS(birthday, id)
(
   PARTITION p1 VALUES LESS THAN('2020-01-01', 1000),
   PARTITION p2 VALUES LESS THAN('2021-01-01', 2000),
   PARTITION p3 VALUES LESS THAN('2022-01-01', 3000),
   PARTITION pm VALUES LESS THAN(MAXVALUE,MAXVALUE)
)

创建LIST一级分区

使用分区函数

使用单列分区键datetime并通过分区函数to_days转换为日期天数,再进行列表分区:


CREATE TABLE tb_l_fn(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY LIST(TO_DAYS(birthday))
(
   PARTITION p1 VALUES IN (TO_DAYS('2020-01-01'),TO_DAYS('2020-02-01')),
   PARTITION p2 VALUES IN (TO_DAYS('2021-01-01'),TO_DAYS('2021-02-01')),
   PARTITION p3 VALUES IN (TO_DAYS('2022-01-01')),
   PARTITION pm VALUES IN (DEFAULT)
)

不用分区函数

使用单列分区键id进行列表分区,并指定分区数目为8:


CREATE TABLE tb_l(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY LIST(id)
(
   PARTITION p1 VALUES IN (1000,1001,1002),
   PARTITION p2 VALUES IN (2000,2001,2002),
   PARTITION p3 VALUES IN (3000),
   PARTITION pm VALUES IN (DEFAULT)
)

创建LIST COLUMNS一级分区

使用向量分区键(birthday,id)按列表分区:


CREATE TABLE tb_lc(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime not null,
 primary key(id)
) 
PARTITION BY LIST COLUMNS(birthday, id)
(
   PARTITION p1 VALUES IN (('2020-01-01', 1000),('2020-01-01', 2000)),
   PARTITION p2 VALUES IN (('2021-01-01', 1000),('2021-01-01', 2000)),
   PARTITION p3 VALUES IN (('2022-01-01', 1000),('2022-01-01', 2000)),
   PARTITION pm VALUES IN (DEFAULT)
)


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论