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

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

Database Administration用户
提问于 2018-02-05 08:14:47
回答 2查看 2.5K关注 0票数 0

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

  • 对于一个具有大多数插入的不断增长的表来说,分区是否减轻了插入和更新的速度,或者分区索引就足以保证更快的插入和更新。有人告诉我,分区索引和表可能没有不同的值。对表进行分区以加速插入是否有意义?
  • 这张表是一个写密集型的表.目前,它主要是插入,每行更新一次,并在创建后几秒钟内通过索引id进行2-3次查找,然后对任何操作都不会访问记录。
  • 在唯一id上定义本地索引是最优的,还是像我已经做的那样定义全局索引并对它们进行分区更好?如果我在没有表分区键的情况下定义全局索引(没有在查找中使用时间戳),那么如果分区数量很大,那么访问成本会更高吗?
  • 为不断增长的数据设置全局分区索引的缺点是什么?一旦我决定在稍后的时间点移除分区,因为索引不是由时间戳分割的,而是由唯一的id划分的,那么操作会不会对功能索引产生直接影响?

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

EN

回答 2

Database Administration用户

发布于 2018-02-05 09:31:58

…分区是否减轻了插入和更新的速度,或者分区索引是否足以保证更快的插入和更新…?对表进行分区以加速插入是否有意义?

不,绝对不是。分区的主要好处是删除分区的成本较低。您说过“数据可以在几周后存档或丢弃”,这可能会使您成为真正的分区候选。

在惟一id上定义本地索引是最优的,还是像我已经做的那样定义全局索引并对它们进行分区比较好呢?…为不断增长的数据设置全局分区索引的缺点是什么?一旦我决定在稍后的时间点移除分区,因为索引不是由时间戳分割的,而是由唯一的id划分的,那么操作会不会对功能索引产生直接影响?

使用全局索引首先与分区相反--如果删除分区,则标记为“不可用”。

您可能会发现这篇甲骨文是一个有用的读物。

票数 1
EN

Database Administration用户

发布于 2018-02-05 14:22:05

为什么要进行散列分区而不是基于日期的范围分区。如果散列分区,则不能丢弃整个分区。您可能得到的是,插入可能需要跨多个分区和可能的单独存储执行。您可以按日分区和分分区按小时进行分区,这样您就可以一次写入一个子分区,然后移动到下一个分区。因为您可以进行间隔范围分区,所以不需要继续创建新分区,只需删除不再需要的分区即可。确保您有主键。否则,每次删除分区时都需要重新生成索引。主键应用于筛选出不包含大多数查询所需数据的所有分区。至少在你按日期查询的时候。一旦分区剪枝发生,本地索引将在各个分区或子分区内提供帮助。全局索引可以帮助查询,在您的情况下,这些查询不是日期特定的,但需要在所有分区中进行选择。

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

https://dba.stackexchange.com/questions/197053

复制
相关文章

相似问题

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