首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle中的全局无分区索引

Oracle中的全局无分区索引
EN

Stack Overflow用户
提问于 2019-07-19 07:51:11
回答 2查看 993关注 0票数 0

我正在阅读oracle分区索引的文档。在任何地方都可以找到本地分区索引和全局分区索引之间的区别,这在我看来是很清楚的。

我感到困惑的是,“全局”一词并不意味着索引是分区的。

例如,Thomas Kyte在“专家Oracle数据库体系结构”中有几个示例,如下所示:

代码语言:javascript
复制
create index partitioned_idx_global
on partitioned(timestamp)
GLOBAL;
Index created.

我们可以找到类似的例子,在这些例子中,关键字GLOBAL没有在其他地方使用任何分区描述。

全局之后没有分区子句,这似乎与创建索引文档中允许的内容形成了对比。

无分区全局索引的文档对我来说也没有多大意义。

全局无分区索引的行为就像本地无分区索引一样。

什么是“本地无分区索引”?它甚至不应该存在。

因此,我的问题最终是要澄清混乱。规则索引和全局无分区索引有什么区别?以上书中引用的语法是否“合法”?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-19 09:31:12

什么是“本地无分区索引”?

没有“本地无分区索引”这样的情况。看来这可能是文档错误。我想他们想说的是

“全局无分区索引的行为就像非分区表上的索引一样。”

所以是的,汤姆·凯特的书中引用的语法是合法的。

在全局之后没有分区子句,这似乎与创建索引文档中所允许的相反。

默认情况下,全局索引是不分区的。也就是说,表的所有分区都有一个索引。我们可能希望这样做的主要原因是在整个表中强制执行唯一的约束。在实践中,很少需要这样做:分区通常仅限于数据仓库,在数据仓库中,约束强制通常更宽松,因为DML更容易锁定。

链接到的文档演示如何创建全局分区索引。这是一种混合结构,它允许我们使用与数据分区不同的分区方案来构建索引。老实说,在我处理分区的任何站点上,我从来没有遇到过这种情况。然而,@matthewmcpeak提出了一种可能有用的场景。因此,为了将来的寻求者的利益,我将他的意见包括在这个答复中。

全局散列分区索引是减少非常活跃的、唯一的序列值索引争用的好方法。通常,所有插入都在索引的右侧。如果有许多来自多个并行会话的插入,那么可能会有很多争用--每个会话都会为其他会话带来更多的工作(因为它们都需要应用大量撤销来取消提交的更改,以获得一致的块读取)。解决这一问题的一个老方法是使用REVERSE索引。现在,全局散列分区索引更好--减少争用而不破坏物理I/O。为了应用该技术,不需要对表本身进行分区。

票数 4
EN

Stack Overflow用户

发布于 2019-07-19 12:40:28

原则上,Oracle提供三种类型的索引。

  • 全局无分区索引:您有一个索引,它跨越表的所有分区。如果您更改了一个表分区,那么这样的索引将获得UNUSABLE,并且您必须重新构建它。
  • 本地分区索引:此索引的分区方式与基表的分区相同。每个索引分区仅属于一个表分区。
  • 全局分区索引:这个索引是分区的,但是分区键不同于基表的分区键(也可以是非分区表)。例如,您可以让表没有分区,也可以按范围进行分区,但是索引是根据不同列的列表进行分区的。

最常见的是全局无分区索引和本地分区索引。实际上,我无法想象任何用例,如果一个全局分区索引会有意义,它们可能只有在非常特殊的情况下才有用。

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

https://stackoverflow.com/questions/57107906

复制
相关文章

相似问题

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