Range | List | Hash | Range-Hash | Range-List | 是否带来IO操作 | |
增加分区 (add partition) | 支持 | 支持 | 支持 | 支持 | 支持 | 除hash类型外,均不变带来大量IO |
收缩分区 (coalesce partitions) | / | / | 支持 | 分区:/ 子分区:支持 | / | 是 |
删除分区 (drop partition) | 支持 | 支持 | / | 分区:支持 子分区:/ | 支持 | 无 |
交换分区 (exchange partition) | 支持 | 支持 | 支持 | 支持 | 支持 | 无 |
合并分区 (merge partition) | 支持 | 支持 | / | 分区:支持 子分区:/ | 支持 | 是 |
修改默认属性 (modify default attributes) | 支持 | 支持 | 支持 | 支持 | 支持 | 无 |
修改分区当前属性 (modify partition) | 支持 | 支持 | 支持 | 支持 | 支持 | 无 |
List分区增加值 (modify partition add values) | / | 支持 | / | / | 分区:/ 子分区:支持 | 无 |
List分区删除值 (modify partition drop values) | / | 支持 | / | / | 分区:/ 子分区:支持 | 单纯删除操作无,但可能为了实现成功删除,之前的准备操作会带来一定量的IO |
修改子分区模板 (set subpartition template) | / | / | / | 支持 | 支持 | 无 |
移动分区 (move partition) | 支持 | 支持 | 支持 | 分区:支持 子分区:/ | 分区:支持 子分区:/ | 有 |
重命名分区 (rename partition) | 支持 | 支持 | 支持 | 支持 | 支持 | 无 |
分隔分区 (split partition) | 支持 | 支持 | / | 分区:支持 子分区:/ | 支持 | 有 |
截断分区 (truncate partition) | 支持 | 支持 | 支持 | 支持 | 支持 | 无 |
注:上述IO列的评估建立在假设分区中均存在一定量数据,并忽略修改数据字典可能触发的IO,忽略造成的索引的重编译带来的IO。
分区索引的操作也有一张表黑黑,如下:
分区索引 | 索引类型 | Range | List | Hash | 组合分区 | 是否带来IO操作 |
增加分区 (add partition) | 全局 | / | / | 支持 | / | 是 |
本地 | / | / | / | / | ||
删除分区 (drop partition) | 全局 | 支持 | / | / | / | 无 |
本地 | / | / | / | / | ||
修改默认属性 (modify default attributes) | 全局 | 支持 | / | / | / | 无 |
本地 | 支持 | 支持 | 支持 | 支持 | 无 | |
修改分区当前属性 (modify partition) | 全局 | 支持 | / | / | / | 无 |
本地 | 支持 | 支持 | 支持 | 支持 | 无 | |
重编译分区 (rebuild partition) | 全局 | 支持 | / | / | / | 有 |
本地 | 支持 | 支持 | 支持 | 支持 | 有 | |
重命名分区 (rename partition) | 全局 | 支持 | / | / | / | 无 |
本地 | 支持 | 支持 | 支持 | 支持 | 无 | |
分隔分区 (split partition) | 全局 | 支持 | / | / | / | 有 |
本地 | / | / | / | / |
另外local索引前头我们多次提到了,其维护会在oracle操作表分区的时候自动进行,需要注意的是global索引,当global索引所在表执行alter table涉及下列操作时,会导至该索引失效:
Ø ADD PARTITION | SUBPARTITION
Ø COALESCE PARTITION | SUBPARTITION
Ø DROP PARTITION | SUBPARTITION
Ø EXCHANGE PARTITION | SUBPARTITION
Ø MERGE PARTITION | SUBPARTITION
Ø MOVE PARTITION | SUBPARTITION
Ø SPLIT PARTITION | SUBPARTITION
Ø TRUNCATE PARTITION | SUBPARTITION
因此,建议用户在执行上述操作sql语句后附加update indexes子句,oracle即会自动维护全局索引,当然,需要注意这中间有一个平衡,你要平衡操作ddl的时间和重建索引哪个时间更少,以决定是否需要附加update indexes子句。