“tempdb”的磁盘大小注意事项 - 每年大幅增长两次

Ste*_*ler 3 database-design sql-server tempdb sql-server-2017

我有一个 HR 软件,HR 部门的一名员工在该软件上每年运行大约两次长时间且复杂的分析和计算。因此,它tempdb正在增长到 500GB 甚至更多。

什么是好的磁盘大小调整解决方案?因为今年剩下的时间tempdb没有那么大。

细节

  • SQL Server 版本和相关版本是 2017 标准版。
  • tempdb和数据库在同一个分区上D:,日志文件在不同的分区上E:
  • HR 数据库本身大约有 78GB。

Bra*_*adC 6

“真正”的答案是:与 HR 和/或他们的软件供应商合作,修复或改进他们一年两次的工作,这样他们就不会这样做。

假设这是不可能的,您将面临两个三个糟糕的选择:

  1. 一整年都让 tempdb 变得庞大。
  2. 在磁盘上留出足够的空白空间,以便 tempdb 可以变大,然后立即将其缩小。
  3. 在处理之前与系统协调添加磁盘空间,然后收缩 tempdb 并恢复磁盘空间。

1 和 2 在功能上几乎相同,尽管我倾向于 2(以防万一供应商在过去 6 个月的某个时候采取了行动,并在您不知情的情况下修复了他们的处理工作)。

究竟如何进行 #3 将取决于许多技术细节,这些技术细节会因您的环境而异。我会考虑的一种方法是:

  • 在处理之前,向服务器添加一个大的临时驱动器(比如z:
  • ALTER DATABASE tempdb MODIFY FILE对每个 tempdb 文件执行一个操作,同时指定z:上的新位置和更大的文件大小
  • 重新启动 SQL 以使该更改生效(SQL 每次重新启动时都会重新创建 tempdb)
  • 让 tempdb 在z上使用尽可能多的空间在处理期间
  • 处理完成后,重新执行ALTER DATABASE tempdb MODIFY FILE将 tempdb 重定向回原始驱动器(和原始较小的大小)
  • 再次重启 SQL 使更改生效
  • 删除/删除现在为空的磁盘

在我们的环境中,这是可取的,因为(我们的SAN /虚拟化的特定配置),它正好是极大地更容易添加和以后删除比它是一个驱动器扩展现有的驱动器和(特别是),以缩小现有驱动器。(如果我没记错的话,缩小现有驱动器实际上需要提供一个全新的磁盘并迁移数据)。但是您的里程可能会因您的配置而异。