MS SQL 布局以获得最佳性能

ITG*_*y24 4 performance database sql-server

我们购买了一台新服务器作为 MS SQL 后端。我很想知道它的最佳设置是什么。

服务器是戴尔 R710 它有 6 个硬盘驱动器 2x 74GB 15k 和 4x 146GB 15k

这是当前在 RAID 1/Raid10 配置中设置的。

我的问题是以下应该去哪里(哪个数组)?

TEMPDB(还有多少、大小和增长) 系统 DB(主数据库、模型等) 应用 MDF 应用 LDF 系统页面文件

操作系统已安装在 RAID1 上。

spl*_*tne 13

临时数据库

不久前我做了一些关于 tempdb 优化的研究,并在 Stackoverflow 上回答了我自己的问题。这是我发现的。

为了优化 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 1 或 RAID 10 阵列上,因为它们已针对高写入应用程序进行了优化。如果您可以为 tempdb 的每个物理数据库文件提供额外的 RAID 1 或 RAID 10 阵列,您将获得更高的性能。

数据库文件

服务器中的每个 CPU 内核都应该有一个物理文件。所以,如果你有一个双芯片、双核服务器,你应该有四个用于 tempdb 数据库的物理数据库文件。添加更多数据库文件时,以相同的初始大小和相同的增长设置配置文件很重要。这样,SQL Server 将尽可能均匀地跨文件写入数据。

数据库文件大小

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

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

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

tempdb 的最小大小建议如下:

  环境 大小 数据库大小 (MB) 日志大小 (MB)
  ————————————————————————
  小号 1024 256
  中号 5120 1024
  大10024 2048

数据库设置

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

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

要获得最佳 tempdb 性能,请遵循优化 tempdb 性能中提供的指导方针和建议。

如何监控 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 的资源。

链接: