首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle中分区表的本地索引与全局索引

Oracle中分区表的本地索引与全局索引
EN

Stack Overflow用户
提问于 2018-02-05 03:44:17
回答 1查看 2.4K关注 0票数 0

我已经划分了一个表,它几乎以每天7-8百万行的速度增长。分区是使用时间戳列完成的,因为数据可以在几周后存档或丢弃。我还在表上创建了一个索引,该索引位于主键或其他唯一的值上。我的索引也是分区的,但是索引的分区是使用散列函数完成的,不包括表的分区键(这是时间戳)。所以我有几个问题。

这张表是一个写密集型的表.目前,它主要是插入,每行更新一次,并在创建后几秒钟内通过索引id进行2-3次查找,然后对任何操作都不会访问记录。

  • 在唯一id上定义本地索引是最优的,还是像我已经做的那样定义全局索引并对它们进行分区更好?如果我在没有表分区键的情况下定义全局索引(没有在查找中使用时间戳),那么如果分区数量很大,那么访问成本会更高吗?
  • 为不断增长的数据设置全局分区索引的缺点是什么?
  • 一旦我决定在稍后的时间点移除分区,因为索引不是由时间戳分割的,而是由唯一的id划分的,那么操作会不会对功能索引产生直接影响?

任何其他建议都会有帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-02-05 07:16:26

实际上,我不知道有什么理由让索引分区与表分区不同(这就是您所拥有的)。

创建全局索引或本地索引,即分区索引,其中索引的分区与基础表的分区相同。

当您有全局索引并且删除或截断一个分区时,全局索引就变得“不可用”,必须重新构建。您可以通过将子句UPDATE INDEXES添加到drop/truncate语句中来自动实现这一点。然而,这样的操作可能需要一段时间,这是全球指数的主要缺点。

一般来说,本地索引更好,它们更易于维护,而且通常更快,因为它们更小。但是,如果您有许多分区,并且您的主要查询不包括分区键(在您的情况下是时间戳),那么本地索引可能会对性能产生负面影响。如果您有100个分区,那么Oracle必须扫描100个索引分区,这基本上意味着:扫描100个索引!在这种情况下,全球指数要快得多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48615599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档