根据 Mark Russinovich 的《Windows Internals》第 5 版,Windows 在 x86 和 x64 架构上都使用 4 KB 的(小)页面大小来管理内存。虽然我找不到原因,但直觉上我认为 SQL Server 会为其自己的页面使用相同的大小,但它使用的页面大小为 8 KB。
我查阅了文档和博客文章,但还是无法找到这种行为的解释。我所能找到的只是事实就是如此。
我绝对不是在争论这到底是好是坏(而且我也没有资格这么做),我只是好奇并且想了解导致这个决定的动机。
为 SQL Server 选择 8 KB 的页面大小的技术原因是什么?为什么这是一个好的页面大小?或者也许它只是从 Sybase 家族继承而来?
这个决定如何影响 SQL Server 的性能(即它内部如何与系统的内存和磁盘交互)?
我的第二个想法是与存储子系统有关,但我仍然不确定。(NTFS 的默认簇大小为 4KB)
答案1
我的第一个想法是与磁盘存储有关的东西,但我不确定,因为我认为 NTFS 的簇大小也是 4KB。
不,它具有可配置的集群大小,并且任何有把握的 SQL 服务器 DBA 都会将数据库文件分区设置为 64kb。
据我所知,Windows 本身在 x86 和 x64 架构上都使用 4KB 的(小)页面大小
不,它原本是 4kb 大小,后来被移至 8kb 以减少开销。它们还以 64kgb(8 页,每页 8kb)的扩展进行管理,并且始终同时进行读取和写入。这意味着 SQL Server 的 64kb NTFS 集群大小是完美的;)
最后,它是关于与分配保持一致并减少开销,而这被认为是最佳点。