我正在阅读“索引争用”并找到以下解释:
Oracle b-tree索引是“右撇子”,b-tree的右侧叶子包含最低树级别中的最高密钥。
当基于用户生成的密钥(即序列)插入行时发生索引叶节点争用,并且因为序列密钥始终是高阶键,所以低级索引树节点的每个插入必须向上传播到b树指数中的高调指标。
oracle b-tree索引还有其他任何缺点吗?
可能是索引争用/插入争用的其他原因是什么?
答案 0 :(得分:2)
索引连续生成的pk时,可能会发生索引争用或热点。在这种情况下,所有新记录总是插入到索引的最右边的叶子上,从而导致锁存。
为避免此问题,oracle引入了reversed key选项。在反向键索引中,条目被反转保存(简单地说 - 123将被存储为321)并且新插入将在索引中传播。
一般来说,每次将大量数据插入同一个叶块时都会出现热点。
重要提示 - 使用反向键索引时,您将无法使用范围扫描,因此请权衡您的选项。
答案 1 :(得分:0)
我的问题是专门针对oracle b-tree索引而不是实际上是什么“索引争用”。 虽然我想在我的问题中添加更多的观点,然后回答它。
当基于用户生成的密钥(即序列)插入行时发生索引叶节点争用,并且因为序列密钥始终是高阶键,所以低级索引树节点的每个插入必须向上传播到b树指数中的高调指标。
有三种技术可用于缓解此索引争用问题: