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