这篇博客http://blogs.msdn.com/sqlserverstorageengine/archive/2009/01/04/managing-tempdb-in-sql-server-tempdb-configuration.aspx表示,"将TempDB传播到最佳位置是个好主意"至少与CORE或CPU一样多的大小相同的文件."
所以我的基本问题是如何实际配置我的SQL服务器来做到这一点.所以我右键单击tempdb,选择属性,文件,然后为每个CPU添加一个文件?它是如何知道它应该在这些文件中传播tempdb?我应该设置一个标志吗?
我误解了这篇文章吗?
只要您可以将其他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个物理磁盘).
我知道这已经很晚了,但是每个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.