将TempDB拆分为多个文件,这些文件等于CPU的数量


8

SQL Server tempdb最佳实践提高性能》一文建议,我应该将tempdb文件分割成与内核数相等的数量。因此,对于4个内核,您将获得4个文件。

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

尽管从理论上讲听起来不错,但总体上来说它真的那么好吗?它仅适用于IO非常高的特定系统吗?

Answers:


13

长期以来,建议将TempDB数据文件与计算机内核的比率为1/4到1/2倍...

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

最后一句话一直很重要。如果您没有看到争用,为什么还要添加其他文件?为了安全起见,大多数人会为大多数构建添加2-4个文件作为起点,但除此之外,请衡量并做出反应。


10

像大多数一般性准则一样,从最积极的角度来看,这过于简化了。充其量,这是一个很好的起点(前提是您不保持大量核心的1:1 核心:数据文件比率)。

适当的设计以及适当的后续监视和基线检查无可替代tempdb具有多个数据文件的原因是为了减少和减轻分配页争用。有关如何监视此争用并采取相应措施的文章很多。以下是一些资源:

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

但是要回答您的问题,没有,这不是tempdb的一成不变的配置和遗忘部分。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.