- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个带有自动递增代理键的表。
这是使用反向索引的好例子吗?
我说的对吗:
插入(到索引中)会更快......因为新值会随机插入,而不是总是进入最右边的叶子(不断强制重新平衡)。
索引查找会稍微慢一些......因为数据库将不得不花费(一点)时间来反转索引。
因为它是一个代理键..我真的不需要范围扫描能力(你不能用反向索引做到这一点)。
(注意,我没有使用 Oracle RAC)
最佳答案
通常,如果您不使用 RAC,则没有理由使用反向键索引。
从性能的角度来看,在任何给定的时间点有一个或两个受插入影响的热块要好得多,因为这基本上保证了热块将在缓冲区缓存和 INSERT
中。不必承担从磁盘读取块的成本。如果您在索引中的随机块中插入了插入,则您想要的块很可能会从缓存中老化并产生物理 I/O 的成本。
保持索引平衡的成本非常低,但即使如此也有利于标准索引。如果您有一个带有普通索引的序列生成的主键,Oracle 将执行 90/10 block split当该块填满时,在最右边的块上。相比之下,如果你有一个反向键索引,Oracle 必须做 50/50 block splits每当给定的块填满时。 50/50 的块拆分将旧块中的一半数据复制到新块,90/10 的块拆分仅将最右侧的数据值复制到新块。因此,90/10 块拆分比 50/50 块拆分便宜得多,无论您选择何种索引类型,您都需要进行大致相同数量的块拆分。因此,即使不考虑缓存的影响,维护常规索引的成本也低于维护反向键索引的成本。
您考虑使用反向键索引的原因是您正在使用 RAC 并且您希望避免让许多 RAC 节点都争夺同一个热块的成本。如果您经常需要将热块从一个节点传送到另一个节点以进行下一次插入,那么使用反向键索引来减少这种争用可能是值得的。如果您已获得分区选项的许可,最好还是使用散列分区索引(无论表是否分区都可以这样做)。如果您尚未获得分区选项的许可,反向键索引可能足以解决热块上的争用问题,而无需您获得分区许可。
关于oracle - 在代理键上使用反向索引的好习惯? (甲骨文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9960535/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!