另一个问题的图表是针对 100 万行的表。当为 10,000 行绘制时,该图具有相当不同且更有趣的形状。
当列长度介于 524 和 903 之间时,存在一个平台期。
这种形状出现在我的工作和家用笔记本电脑上。(分别是 SQL Server 2017 CU27 和 2017 CU22、2019 CU8。两个盒子都有 16GB RAM。)
这让我认为它是经过调整的真正设计选择,而不是人工制品。
为 SQL Server 2019 设置 BATCH_MODE_ON_ROWSTORE = OFF 几乎没有任何区别。除 t800 为 6688kB 关闭和 6656kB 开启外,所需内存在所有大小上都相同。
这张图怎么会有这样的形状?哪些考虑因素意味着三区域解决方案在中等行数(10,000 行)而不是较大行数(100 万行)时是最佳的?
我知道 SQL Sever 开发团队之外的任何人都无法最终说明这个特定图表是这种形状的原因。但总的来说,从学术和行业经验来看,如果我开始为假设的 DBMS 编写内存管理模块,什么样的考虑会导致这种结果?