SQL Server tempdb优化提示新服务器?

时间:2008-12-11 16:57:51

标签: sql-server performance configuration tempdb

我计划在新机器上全新安装 SQL Server 2005 ,我必须订购。我知道 tempdb调整对于SQL Server实例的整体性能非常重要。

我已经读过,最好的做法是创建尽可能多的tempdb文件,就像拥有CPU(或核心?)一样。那是对的吗?是否有其他建议,例如对于硬盘/ RAID设置配置我应该注意什么?

谢谢!

5 个答案:

答案 0 :(得分:31)

以下是我从各种来源研究的内容。

为了优化tempdb性能,请注意物理磁盘配置,文件配置以及数据库内的一些设置。

物理磁盘配置

tempdb应驻留在自己的专用物理磁盘上。这允许它从SQL Server上的其余卷拆分I / O事务。

要将tempdb移至新磁盘驱动器,请使用ALTER DATABASE。它是执行此操作的关键T-SQL命令。 Microsoft在SQL Server 2005联机丛书中提供了一个很好的示例。文章名称是ALTER DATABASE(Transact-SQL),特定部分是'G。将tempdb移动到新位置。'

tempdb是一个非常高写的数据库。因此,RAID 5阵列不适合它。您应该将tempdb 放在RAID 0或RAID 10阵列上,因为它们已针对高写入应用程序进行了优化。如果您可以为tempdb的每个物理数据库文件提供额外的RAID 0或RAID 10阵列,您将获得更高的性能。

数据库文件

服务器中每个CPU核心应该有一个物理文件。因此,如果您有双芯片双核服务器,那么tempdb数据库应该有四个物理数据库文件。添加更多数据库文件时,以相同的初始大小和相同的增长设置配置文件非常重要。这样,SQL Server将尽可能均匀地在文件中写入数据。

数据库文件大小

tempdb数据库的大小会影响系统的性能。例如,如果为tempdb定义的大小太小,则每次重新启动SQL Server实例时,部分系统处理负载可能将自动增长tempdb用于支持工作负载所需的大小< / strong>即可。您可以通过增加tempdb数据和日志文件的大小来避免这种开销。

在生产环境中确定tempdb的适当大小取决于许多因素,包括现有工作负载和使用的SQL Server功能。 Microsoft建议您通过在SQL Server 测试环境中执行以下任务来分析现有工作负载:

  1. 为tempdb 设置自动增长(在测试环境中!)
  2. 执行单个查询或工作负载跟踪文件并监视tempdb空间使用情况。
  3. 执行索引维护操作,例如重建索引和监视tempdb空间。
  4. 使用前面步骤中的空间使用值来预测您的总工作负载使用情况;为预计的并发活动调整此值,然后设置tempdb的大小 相应地。
  5. tempdb的最小大小建议如下:

       Envir. Size  DB Size (MB)  Log Size (MB)
       -----------  ------------  -------------
       Small                1024            256
       Medium               5120           1024
       Large               10024           2048
    

    数据库设置

    您可以通过禁用自动更新统计信息进一步提高tempdb性能,这将为您的tempdb节省一些工作。您还可以将自动创建统计信息选项设置为false

    免责声明:应谨慎更改设置。根据您放置在tempdb上的负载类型,更改设置可能会对系统性能产生负面影响。

    要获得最佳的tempdb性能,请遵循Optimizing tempdb Performance中提供的指南和建议。

    如何监控tempdb使用情况?

    在tempdb中运行磁盘空间不足可能会在SQL Server生产环境中导致严重中断,并可能阻止正在运行的应用程序完成操作。

    您可以使用sys.dm_db_file_space_usage动态管理视图来监视tempdb文件中这些功能使用的磁盘空间。此外,要在会话或任务级别监视tempdb中的页面分配或释放活动,您可以使用sys.dm_db_session_space_usagesys.dm_db_task_space_usage动态管理视图。

    这些视图可用于标识使用大量tempdb磁盘空间的大型查询,临时表或表变量。还有几个计数器可用于监视tempdb中可用的可用空间以及使用tempdb的资源。

    <强>链接:

答案 1 :(得分:6)

如果我必须挑选一个我信任的人来配置服务器,那就是Denny Cherry。他写了一篇文章来解释这一点。

http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1307255,00.html

答案 2 :(得分:2)

从我读过的内容来看,最好将tempDB放在它自己的物理磁盘(或阵列)上。为了获得最大速度,您可以放入raid 0阵列。但是,如果其中一个磁盘发生故障,则DB服务器将无法运行。如果您想要更多冗余,请将其放在raid 10阵列上。真正的关键似乎是将它与其他数据库分开,因为TempDB中可能有这么多活动。

你走多远取决于服务器上的其他数据库以及它们是否在临时表等方面做了大量工作。

根据CPU数量或内核数量,我没有听说过多个文件。

答案 3 :(得分:2)

另请参阅此帖子SQL Server Transaction Log RAID,其中包含有关tempdb周围某些问题的服务器布局的讨论。

答案 4 :(得分:0)

我建议创建介于1/2和1/4 *内核之间的数据文件。 你应该将这些文件放在你拥有的最快的磁盘上

了解更多信息,请点击此处: SQL Server tempdb configuration