Oracle 更新partition key注意事项

更新partition key时,会导致该记录超出当前所在分区的范围,需要将其转移到其他对应分区上,因此需要开启ROW MOVEMENT;

 

原因:

这一操作产生影响的特殊之处在于这是个DML操作,是和online transaction密切相关的。这样对于一个update,实际上分为3步:

1、删除原有分区的数据

2、将原有数据转移到新分区上

3、更新数据

即一个update操作被拆分成:delete、insert、update三个操作。增加了性能负担。其中delete的查询条件与原update的查询条件相同,新的update的查询条件是基于insert生成的新的ROWID;相应的Redo Log、Undo log会增加。如果update语句还涉及到Local Index的字段的话,新、旧2个分区上的local index都要被更新。

还有一点,row movement会和域索引(Domain Index)产生冲突,如果表上定义了域索引,开启Row movement会失败,反之亦然。

posted @ 2020-12-15 10:30  Ayumie  阅读(532)  评论(0编辑  收藏  举报