以下是我从各种来源进行的研究。
为了优化 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 都会自动增长到支持工作负载所需的大小。您可以通过增加 tempdb 数据和日志文件的大小来避免这种开销。
在生产环境中确定 tempdb 的适当大小取决于许多因素,包括现有工作负载和所使用的 SQL Server 功能。 Microsoft 建议您通过在 SQL Server 中执行以下任务来分析现有工作负载test环境:
- 为 tempdb 设置自动增长(在测试环境中!).
- 执行单个查询或工作负载跟踪文件并监视 tempdb 空间使用情况。
- 执行索引维护操作,例如重建索引和监视tempdb空间。
- 使用前面步骤中的空间使用值来预测您的总工作负载使用情况;根据预计的并发活动调整此值,然后设置 tempdb 的大小
因此。
tempdb 的最小大小建议如下:
Envir. Size DB Size (MB) Log Size (MB)
----------- ------------ -------------
Small 1024 256
Medium 5120 1024
Large 10024 2048
数据库设置
您可以通过以下方式进一步提高 tempdb 性能禁用自动更新统计数据,这将为您的 tempdb 节省一些工作。您还可以设置自动创建统计选项为 false.
免责声明:更改设置时应小心。根据您对 tempdb 施加的负载类型,更改设置可能会对系统性能产生不利影响。
要实现最佳 tempdb 性能,请遵循中提供的指南和建议优化 tempdb 性能 http://msdn.microsoft.com/en-us/library/ms175527.aspx.
如何监控tempdb的使用情况?
Running tempdb 磁盘空间不足 can 造成重大干扰在 SQL Server 生产环境中,可能会阻止正在运行的应用程序完成操作。
您可以使用sys.dm_db_file_space_usage
动态管理视图来监视 tempdb 文件中这些功能所使用的磁盘空间。此外,要在会话或任务级别监视 tempdb 中的页面分配或释放活动,您可以使用sys.dm_db_session_space_usage
and sys.dm_db_task_space_usage
动态管理视图。
这些视图可用于识别使用大量 tempdb 磁盘空间的大型查询、临时表或表变量。还有几个计数器可用于监视 tempdb 中的可用空间以及正在使用 tempdb 的资源。
Links:
- 微软技术网:在 SQL Server 2005 中使用 tempdb http://www.microsoft.com/technet/prodtechnol/sql/2005/workingwithtempdb.mspx
- 搜索SQLServer.com:SQL Server tempdb 最佳实践可提高性能 http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1307255,00.html
- MSDN 库:优化 tempdb 性能 http://msdn.microsoft.com/en-us/library/ms175527.aspx
- 搜索SQLServer.com:配置 SQL Server 2005 TempDB 以提高性能 http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1180698,00.html
- MSDN 库:tempdb 的容量规划 http://msdn.microsoft.com/en-us/library/ms345368.aspx
- MSDN 库:对 tempdb 中磁盘空间不足进行故障排除 http://msdn.microsoft.com/en-us/library/ms176029.aspx