此博客http://blogs.msdn.com/sqlserverstorageengine/archive/2009/01/04/managing-tempdb-in-sql-server-tempdb-configuration.aspx指出,“至少在与CORE或CPU一样多的大小相同的文件中传播TempDB”是一个好主意。
所以我的基本问题是我如何实际配置我的SQL服务器来做到这一点。所以我右键单击tempdb,选择属性,文件,然后为每个CPU添加一个文件?它是如何知道它应该在这些文件中传播tempdb?我应该设置一个标志吗?
我误解了这篇文章吗?
答案 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在他的博客中揭穿的一个神话:
文章的基本建议:If you have > 8 cores, use 8 files and if you're seeing in-memory contention, add 4 more files at a time.