【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 OceanBase_CE 4.1.0.1
【问题描述】OB支持分区键字段的更新吗?更新会导致数据在分区间迁移。
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 OceanBase_CE 4.1.0.1
【问题描述】OB支持分区键字段的更新吗?更新会导致数据在分区间迁移。
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
支持分区键变更的,语法是 alter table t partiiton by range (xxx) (partition …),分区键变更属于offline ddl 操作,分区的数据可能会重新倒腾。
分区键变更时,你要保证分区键是主键的子集,否则不支持。
可能是我表述的不清楚,我想问的是分区键字段值的更新,值的更新会导致数据变更到不同的分区,这个也支持吗?
分区键值的更新?能举个例子吗
支持的,更新过程中会重整数据的
更新过程中的锁是怎样的呢
表锁,offline ddl来的,现在ODC上会支持无锁结构变更,可以用这个工具降低影响
https://www.oceanbase.com/docs/common-odc-1000000000090998
是这样的场景
create table test
(
id number,
name varchar(30),
sharding_key varchar(30),
dt datetime
primary key(id, sharding_key)
partition by list columns (sharding key)
(partition p0 values in (‘a’),
partition p1 values in (‘b’)
partition p2 values in (‘c’));
insert into test values(1, ‘name1’,‘a’,now());
insert into test values(2, ‘name2’,‘b’,now());
insert into test values(3, ‘name3’,‘c’,now());
在update的时候,update分区键
update test set sharding_key=‘a’ where id = 2;
这样原来id为2的记录就会从p1迁移到p0,这种操作是否支持,会造成锁吗,锁结构是怎样的?
是这样的场景
create table test
(
id number,
name varchar(30),
sharding_key varchar(30),
dt datetime
primary key(id, sharding_key)
partition by list columns (sharding key)
(partition p0 values in (‘a’),
partition p1 values in (‘b’)
partition p2 values in (‘c’));
insert into test values(1, ‘name1’,‘a’,now());
insert into test values(2, ‘name2’,‘b’,now());
insert into test values(3, ‘name3’,‘c’,now());
在update的时候,update分区键
update test set sharding_key=‘a’ where id = 2;
这样原来id为2的记录就会从p1迁移到p0,这种操作是否支持,会造成锁吗,锁结构是怎样的?