有很多关于 windows 页面文件大小的建议。我正在寻找的是正确的位置。
我们在具有多个单独虚拟磁盘的 Server 2012R2 VM 上运行 MS SQL 服务器:
- 视窗磁盘
- 一个安装了 SQL Server 应用程序的磁盘
- 用于 SQL 数据文件 (mdf/ndf) 的磁盘
- 用于事务日志文件 (ldf) 的磁盘
- 一张用于手动备份和其他临时文件的磁盘。
目前,Windows 已经控制了页面文件。它将其大小调整为 38GB(内存为 265),并将其与日志文件一起放在磁盘上。就我的理解而言,这种放置是不合逻辑的:包含 SQL 事务日志文件的磁盘是 SQL 服务器上 I/O 最重的磁盘。它真的是页面文件的最佳位置吗?至于存储空间,我可以轻松地将文件移动到另一个驱动器。
我知道,Windows 可能有理由将文件放在那里 - 但如果是这样,这可能是什么?还是我的想法有问题?
在您担心页面文件大小之前......
老实说,您永远不希望您的 SQL Server 开始分页。当它的内存被分页到磁盘时,SQL Server 倾向于变成梨形。
SQL Server 的最佳实践是将
Max Server Memory
配置设置为一个足够大的数字,以便 SQL Server 拥有足够的内存,但又足够小,以使您的操作系统和服务器上运行的任何其他设备都有足够的内存。关于如何在此处和此处进行配置有一些很好的建议。对于具有 256GB 内存且仅在服务器上运行 SQL Server 的服务器,我建议从配置为 235929 MB 的最大服务器内存开始,这允许大约 25GB 的空间。这应该足以防止分页。
互联网上关于该页面文件的说法...
互联网上有很多建议说您的页面文件应该是内存大小的 1.5 倍。在具有 256GB 内存的服务器上,这将需要 386GB 的页面文件。您可能希望此页面文件位于与数据和日志文件分开的驱动器上(否则,分页到您的数据/日志驱动器会加剧由分页引起的性能问题)。您的 C:\ 驱动器可能不够大,除非您正在构建具有 512GB C:\ 驱动器的服务器。您还希望驱动器速度快(否则分页到慢速磁盘会加剧由分页引起的性能问题)。您可能需要一个专用磁盘来存储该 1.5x 页面文件。
该建议假定您希望您的服务器进行分页。您不希望您的服务器分页。SQL Server 在开始分页时可能会崩溃,如果不这样,您的性能将慢得像爬行一样。您可以为您的页面文件购买某种超快速 NVMe 驱动器,这可能会使性能可以接受。
互联网是错误的。
我说的那个页面文件...
我什至不在乎它有多大。我永远不会使用它。它可以很小。它可以在 C:\ 驱动器上。C:\ 驱动器可能很慢。
如果系统崩溃并产生内存崩溃转储,我的页面文件可能不足以处理该转储。但是在具有大量内存的系统上,将 1TB 内存转储到磁盘以进行故障转储将需要很长时间,即使在快速磁盘上也是如此,而且我通常更喜欢让 SQL Server 快速恢复联机以捕获故障转储。作为故障排除的一部分,我可以重新配置具有反复出现的问题的服务器。
不要将 Windows 页面文件 (Pagefile.sys) 放在数据库或日志文件所在的同一磁盘上。您可以将其保留在系统驱动器上或为其分配新驱动器。如果系统驱动器存储是 SSD,您可以将页面文件保留在那里,并根据 RAM x 1.5 的数量设置页面文件的起始大小。