SQL Server 2019 CTP3.1引入了解决最后一页插入争用的优化。这采用名为的索引选项的形式OPTIMIZE_FOR_SEQUENTIAL_KEY。
有人认为这可能是Bw-Tree或Bz-Tree的改编。然而,这些依赖于可变大小的页面,而当前的存储引擎需要固定大小的页面。
优化是如何实现的?这种优化如何改变当前的 B 树算法?在什么情况下我会选择不部署此选项?
反向密钥方法的专利。
我使用 DBCC PAGE 快速浏览了一下,比较了 2017 年与 2019 年和 2019 年在 int IDENTITY 列的唯一聚集索引上使用和不使用 OPTIMIZE_FOR_SEQUENTIAL_KEY 的情况。没有什么可以明显地解释这种新行为。这让我觉得它是一个算法的东西,而不是一个结构的东西,这是有道理的。
来自 MS的博客文章。
此功能似乎以检测和避免车队为中心。