SQL Server 页面文件位置 - 放在哪里?

Tob*_*ias 6 pagefile sql-server windows-server-2012-r2

有很多关于 Windows 页面文件大小的建议。我正在寻找的是正确的位置。

我们在具有多个独立虚拟磁盘的 Server 2012R2 VM 上运行 MS SQL 服务器:

  • 视窗磁盘
  • 安装 SQL Server 应用程序的一张磁盘
  • SQL 数据文件的一个磁盘 (mdf/ndf)
  • 一个用于事务日志文件 (ldf) 的磁盘
  • 一张用于手动备份和其他临时内容的磁盘。

目前,Windows 已控制页面文件。它将其大小调整为 38GB(内存为 265),并将其与日志文件一起放在磁盘上。根据我的理解,这种放置是不合逻辑的:包含 SQL 事务日志文件的磁盘是 SQL 服务器上 I/O 最重的磁盘。它真的是页面文件的最佳位置吗?至于存储空间,我可以轻松地将文件移动到另一个驱动器。

我知道,Windows 可能有理由将文件放在那里 - 但如果是这样,那会是什么?还是我的想法有问题?

AMt*_*two 3

在您担心页面文件大小之前......

老实说,您永远不希望 SQL Server 开始分页。当 SQL Server 的内存分页到磁盘时,它很容易出现梨形问题。

SQL Server 的最佳实践是将配置设置Max Server Memory为足够大的数字,以便 SQL Server 拥有足够的内存,但又足够小,以便您的操作系统和服务器上运行的任何其他内容都有足够的内存。这里这里有一些关于如何配置的很好的建议。

对于具有 256GB 内存且在服务器上运行 SQL Server 的服务器,我建议首先将最大服务器内存配置为 235929 MB,这允许大约 25GB 的空间。这应该足以防止寻呼。

EXEC sys.sp_configure 'max server memory (MB)', '235929'; 
RECONFIGURE;
Run Code Online (Sandbox Code Playgroud)

互联网上关于该页面文件的说法......

互联网上有很多建议说页面文件应该是内存大小的 1.5 倍。在具有 256GB 内存的服务器上,这将需要 386GB 的页面文件。您希望此页面文件位于与数据和日志文件分开的驱动器上(否则分页到数据/日志驱动器将加剧分页引起的性能问题)。您的 C:\ 驱动器可能不够大,除非您使用 512GB C:\ 驱动器构建服务器。您还需要驱动器速度快(否则分页到慢速磁盘将加剧分页引起的性能问题)。您可能需要一个专用磁盘来存储该 1.5 倍页面文件。

该建议假设您希望服务器进行寻呼。您不希望您的服务器进行寻呼。SQL Server 在开始分页时可能会崩溃,如果不崩溃,您的性能将变得极其缓慢。您可以为页面文件购买某种超高速 NVMe 驱动器,这可能会使性能可接受。

互联网是错误的。

我所说的关于该页面文件的内容......

我什至不在乎它有多大。我永远不会使用它。它可能非常小。它可以位于 C:\ 驱动器上。C:\ 驱动器可能会很慢。

  • 确保正确设置最大服务器内存(见上文)
  • 如果您的服务器需要更多内存,请在服务器中安装更多内存——不要分页到磁盘。
  • 您应该将页面文件从日志驱动器移至 C: 上。如果您使用它,您希望它远离您的数据/日志驱动器。如果您必须将其缩小以适合 C:\,那就这样做吧。
  • 不要把钱花在用于页面文件的快速磁盘上——把钱花在另一块内存上。

如果系统崩溃并产生内存崩溃转储,我的页面文件可能不够大,无法处理该转储。但在具有大量内存的系统上,将 1TB 内存转储到磁盘以进行故障转储将需要很长时间,即使在快速磁盘上也是如此,而且我通常更喜欢让 SQL Server 快速恢复联机状态以捕获故障转储。作为故障排除的一部分,我可以重新配置经常出现问题的服务器。