ITPub博客

首页 > 数据库 > Oracle > 关于 Oracle 分区索引的创建和维护

关于 Oracle 分区索引的创建和维护

原创 Oracle 作者:feelpurple 时间:2016-02-21 20:53:29 0 删除 编辑
像分区表一样,索引也可以进行分区,包括

1、全局分区索引

是一个独立的分区。

2、本地分区索引

自动和分区表相关联。

适用范围:

通常来说,全局分区索引适用于 OLTP 在线交易系统;而局部分区索引适用于数据仓库或决策系统。

选择分区索引的类型:

按照下面的顺序
1、如果分区表的分区字段是索引键值的子集,则使用本地索引;如果不是这样,则进入步骤2。

2、如果索引是唯一的并且不包含分区表的分区字段,则使用全局索引;如果不是这样,则进入步骤3。

3、如果你想管理方便,则使用本地索引;如果不是这样,则进入步骤4。

4、如果应用程序是在线交易系统(OLTP)且需要很快的响应时间,则使用全局索引。如果应用程序是决策系统(DDS)且更关注数据的吞吐量,则使用本地索引。

本地分区索引



本地分区索引易于维护,每一个本地索引的分区都和一个表的分区相关联。这个功能使得 Oracle 自动地维护索引分区到表分区的同步。如果一个分区中的数据失效了,则只会影响一个分区。

一种叫做非前缀的本地索引在历史数据库中非常有用,在这种类型的索引中,分区不是在索引列的左边前缀。你不能为本地索引添加分区,只有当你给某个表添加分区时,你才可以添加本地索引。
 
本地索引可以是唯一的。然而,为了让一个本地索引是唯一的,表的分区键必须是索引键列的一部分。

全局分区索引



Oracle 包括全局范围分区索引和全局哈希分区索引。

全局范围分区索引

全局范围分区索引是分区程度和分区键独立于分区表的一种灵活分区方法。要添加一个新的最高分区,可以使用 ALTER INDEX SPLITPARTITION 语句。如果一个全局索引分区是空的,你可以通过 ALTER INDEX DROP PARTITION 语句来删除它。如果一个全局分区索引包含数据,删除此分区将会导致下一个最高键值的分区被标记为不可用。你不能删除全局分区中的最高分区。

全局哈希分区索引

全局哈希分区索引通过分散索引的竞争来提高性能。大多数的索引插入只会出现在索引的右侧边缘。

全局分区索引的维护

默认的,下面在堆表分区表上的操作会导致全局索引的状态为不可用。

ADD (HASH) 
COALESCE (HASH) 
DROP 
EXCHANGE 
MERGE 
MOVE 
SPLIT 
TRUNCATE 

可以在对分区表操作的语句上增加 UPDATE INDEXES 来维护全局分区索引。

这样做的优点是:

在对分区表进行操作的时候,索引仍是可用和在线的,这个操作不会影响到应用程序。

在对分区表进行操作后,全局分区索引不必进行重建。

全局非分区索引



全局非分区索引就像一个非分区索引一样。

创建分区索引的注意事项

你可以在分区表上创建位图索引。位图索引只能是本地分区索引,不能创建全局索引。

全局索引可以是唯一的。如果本地索引想创建成唯一的,则分区表的分区键必须是索引字段的一部分。

关于组合分区索引

子分区索引通常是本地分区索引。

表空间可以在索引分区或索引子分区两个级别上进行指定。

分区索引的创建指南

对于在线交易系统,全局分区索引和本地前缀分区索引能比本地非前缀索引提供更好的性能,因为他们能使分区剪裁最小化;当要对分区表进行维护时,本地索引更易于维护和管理,对于历史数据,本地非前缀索引非常有用。

对于决策支持系统,本地非前缀分区索引能提供更好的性能,因为许多分区索引支持并行扫描。

对于历史表来说,索引应该尽可能是本地分区索引,这将减少定期删除分区的影响。

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

请登录后发表评论 登录
全部评论

注册时间:2014-08-01

  • 博文量
    404
  • 访问量
    1673953