我想要关于什么是我们的 SQL Server 2005 TempDB 的最佳设置的建议。
目前,我们的临时数据库由一个MDF
3 GB 的文件和一个 120 MB 的日志文件组成,位于 D: 驱动器的 3 轴 RAID-5 阵列中,该阵列被分区为 C: 和 D: 驱动器。D: 驱动器还包含我们的应用程序核心程序和我们的报告数据库。
我想将临时数据库移动到它自己的驱动器,这是一个具有单个分区的 2 轴 RAID-1 阵列,驱动器 F:。
MDF
当我将它移动到这个驱动器时,我想创建 4 x 1 GB 的临时数据库文件。我没有另一个备用的专用驱动器来拆分 TempDB MDF 和 LDF 文件,因此两者必须在同一个驱动器上。
我应该将 LDF 文件留在当前驱动器上还是应该将所有文件移动到新驱动器上?
此外,在同一底层主轴上对 tempdb 进行条带化可能会增加延迟,也可能会降低延迟,因为这实际上可能会使 tempdb 访问速度变慢 - 单个驱动器仍然具有相同的移动部件,并且您尝试读取的文件越多/同时写,你会变得更糟。
我最多从 2 个文件开始,看看它是否可以改善情况。您甚至可以考虑将一个文件留在原处并在新驱动器上添加第二个文件(取决于原始驱动器上的其他活动)。
还要确保它们的大小完全相同并且它们具有相同的自动增长设置。一旦一个文件大于另一个文件,比例填充算法将只使用一个文件。考虑使用跟踪标志 1117 来确保所有数据文件同时自动增长,同时检查比例填充算法。请注意,此跟踪标志会影响所有数据库 - 因此,如果您有其他具有多个数据文件的数据库,您需要确保它们的自动增长设置不会导致问题。
著名的 SQL Server 专家Paul Randal建议 tempdb 数据文件的数量应等于逻辑核心的数量。因此,如果您有 4 个带超线程的 CPU,您将创建 8 个 tempdb 数据文件。
如果您有 8 个以上的逻辑核心,他建议从 8 个开始,如果您注意到 tempdb 争用,然后以 4 个为单位增加。我们已经在我们的主要 SQL Server 中采用了这种方法,并发性方面的改进是显而易见的。
Tempdb 通常存储在内存中。它的事务可以在不写入磁盘的情况下完成。这意味着 tempdb 的磁盘速度仅对使用大量 tempdb 的查询很重要。
raid 1 和 ldf 都在同一个驱动器上,在写入时会对性能造成一些影响,但您的资源可能有限。如果 TempDB 是性能瓶颈,则留下 ldf 文件会有所帮助。