将 TempDB 拆分为与 CPU 数量相等的多个文件

Pre*_*gha 8 sql-server storage disk-structures sql-server-2008-r2 tempdb

这篇文章的SQL Server的tempdb最佳实践提高性能建议我应该拆分tempdb成若干文件等于内核的数量。因此,对于 4 个内核,您将获得 4 个文件。

通过拥有更多数量的文件,您可以增加 SQL Server 可以随时推送到磁盘的物理 I/O 操作的数量。SQL Server 可以下推到磁盘级别的 I/O 越多,数据库运行的速度就越快。使用标准数据库,SQL Server 可以将其需要的大量数据缓存到内存中。由于 tempdb 的高写入特性,数据需要先写入磁盘,然后才能缓存到内存中。

虽然理论上听起来不错,但它真的像一般优化一样好吗?它是否可能仅适用于 IO 非常高的特定系统?

Mar*_*ith 13

TempDB 数据文件数与机器核心数的比率为 1/4 到 1/2 倍,长期以来一直是建议...

但现在有更好的指导。在 2011 年的 PASS 上,我的好朋友 Bob Ward,他是 SQL 产品支持方面的佼佼者,采用了一个新公式:如果内核少于 8 个,则使用 #files = #cores。如果您有 8 个以上的内核,请使用 8 个文件,如果您看到内存争用,请一次再添加 4 个文件。[关联]

最后一句话一直是相关的。如果您没有看到争用,为什么要添加其他文件?为了安全起见,大多数会添加 2-4 个文件作为大多数构建的起点,但除此之外,还要进行测量和反应。


Tho*_*ger 10

像大多数一般指南一样,从最积极的角度来看,它过于简单化。充其量,这是一个很好的起点(前提是您没有保持 1:1内核:数据文件比率与大量内核)。

正确的设计和正确的后续监测和基线是无可替代的。为tempdb设置多个数据文件的原因是为了减少和缓解分配页争用。关于如何监控此争用并采取相应措施的已发布帖子数不胜数。以下是一些资源:

打破 TempDB 争用(第 1 部分)
打破 TempDB 争用(第 2 部分)
分析 Tempdb 争
用 使用 SQL Server 2012 扩展事件优化 tempdb 配置

但是要回答您的问题,不,这不是tempdb的硬性配置和忘记部分。