如何在多个文件上传播tempdb?

时间:2009-04-05 23:14:27

标签: sql-server

此博客http://blogs.msdn.com/sqlserverstorageengine/archive/2009/01/04/managing-tempdb-in-sql-server-tempdb-configuration.aspx指出,“至少在与CORE或CPU一样多的大小相同的文件中传播TempDB”是一个好主意。

所以我的基本问题是我如何实际配置我的SQL服务器来做到这一点。所以我右键单击tempdb,选择属性,文件,然后为每个CPU添加一个文件?它是如何知道它应该在这些文件中传播tempdb?我应该设置一个标志吗?

我误解了这篇文章吗?

2 个答案:

答案 0 :(得分:39)

只要您可以将其他TempDB文件分布在不同的硬盘上,此提示最佳。否则,创建不同临时表的不同线程将争用同一物理磁盘。

您确实可以完全按照自己的意思去做,工作将自动分布在TempDB数据文件中。这也可以这样编写脚本:

ALTER DATABASE tempdb
ADD FILE (NAME = tempdev2, FILENAME = 'W:\tempdb2.mdf', SIZE = 256);
ALTER DATABASE tempdb
ADD FILE (NAME = tempdev3, FILENAME = 'X:\tempdb3.mdf', SIZE = 256);
ALTER DATABASE tempdb
ADD FILE (NAME = tempdev4, FILENAME = 'Y:\tempdb4.mdf', SIZE = 256);
GO

为您提供三个额外的文件(即4个CPU核心和4个物理磁盘)。

答案 1 :(得分:9)

我知道这已经很晚了,但是每个CPU创建一个文件的建议实际上是Paul Randal在他的博客中揭穿的一个神话:

http://www.sqlskills.com/blogs/paul/post/A-SQL-Server-DBA-myth-a-day-%281230%29-tempdb-should-always-have-one-data-file-per-processor-core.aspx

文章的基本建议:If you have > 8 cores, use 8 files and if you're seeing in-memory contention, add 4 more files at a time.