ITPub博客

首页 > 数据库 > 国内数据库 > OceanBase分区表

OceanBase分区表

原创 国内数据库 作者:wwjfeng 时间:2026-04-12 14:00:24 0 删除 编辑

1.创建范围分区表

CREATE TABLE fgedu_range(id INT, username VARCHAR(20),createdate
TIMESTAMP, PRIMARY KEY (createdate))
PARTITION BY RANGE(UNIX_TIMESTAMP(createdate))
(
PARTITION p0 VALUES LESS THAN (UNIX_TIMESTAMP('2020-01-01 00:00:00')),
PARTITION p1 VALUES LESS THAN (UNIX_TIMESTAMP('2021-01-01 00:00:00')),
PARTITION p2 VALUES LESS THAN (UNIX_TIMESTAMP('2022-01-01 00:00:00'))
);

2.创建list分区表

create table fgedu_list
(
ID int not null,
Name varchar(20) not null,
Age int not null
)
partition by list (Age)
(
partition par_01 values in (20),
partition par_02 values in (30,40)
);

3.hash分区

CREATE TABLE fgedu_hash(id INT, username VARCHAR(20), Age int,
PRIMARY KEY (id))
PARTITION by hash(id) partitions 5;

4.组合分区

CREATE TABLE fgedu_range_hash (
  id int NOT NULL,
  address varchar(50),
  logindate TIMESTAMP NOT NULL,
  PRIMARY key(id, logindate)
) PARTITION BY RANGE(UNIX_TIMESTAMP(logindate)) SUBPARTITION BY HASH(id) SUBPARTITIONS 5 (
  PARTITION p202101
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/02/01')),
    PARTITION p202102
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/03/01')),
    PARTITION p202103
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/04/01')),
    PARTITION p202104
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/05/01')),
    PARTITION p202105
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/06/01')),
    PARTITION p202106
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/07/01')),
    PARTITION p202107
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/08/01')),
    PARTITION p202108
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/09/01')),
    PARTITION p202109
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/10/01')),
    PARTITION p202110
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/11/01')),
    PARTITION p202111
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2021/12/01')),
    PARTITION p202112
  VALUES
    LESS THAN(UNIX_TIMESTAMP('2022/01/01'))
);

5.分区索引

CREATE INDEX idx_fgedu_hash_range_date ON
fgedu_hash_range(createdate) LOCAL;
CREATE INDEX fgedu_range_hash_id_date ON fgedu_range_hash(id,
logindate) GLOBAL;

6.表分组

创建表分组时,首先要规划好表分组的用途。

如果是用于普通表的属性,表分组就不用分区;

如果是用于分区表的属性,表分组就要指定分区策略,并且要跟分区表的分区策略保持一致。

create tablegroup fgedu_group;
#向表分组里加入表
alter tablegroup fgedu_group add fgedu_t1, fgedu_t2;
alter table fgedu_t3 tablegroup='fgedu_group';
alter table fgedu_t1 tablegroup='';
#分区表单独创建表分组
create tablegroup fgedu_pgroup partition by hash partitions 5;
alter tablegroup fgedu_pgroup add fgedu_gt1, fgedu_gt2;

7.表复制

复制表会将数据在集群的 每个节点 上都保存一份完整副本。

#创建一个复制表
CREATE TABLE dim_region (
    region_id INT PRIMARY KEY,
    region_name VARCHAR(50)) DUPLICATE_SCOPE = 'CLUSTER';






来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15412087/viewspace-3115790/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: OceanBase集群命令
下一篇: OceanBase备份恢复
请登录后发表评论 登录
全部评论

注册时间:2010-03-27

  • 博文量
    57
  • 访问量
    199171