首页 > 数据库 > 国内数据库 > OceanBase分区表
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/ ,如需转载,请注明出处,否则将追究法律责任。