如何修复不均匀的 TempDB 文件?

Sho*_*vin 7 sql-server sql-server-2016

我最近向 SQL Server 添加了更多 CPU 内核,并且按照最佳实践的建议,我将 tempDB 文件分成相同数量的内核 (8)。

除了最佳实践之外,我还扩大了新 tempdb 文件的大小、限制了自动增长并缩小了原始文件以匹配新文件的大小。

问题是,由于我从单核变为 8 核,所有 tempdb 数据都保留在第一个文件中,这不允许我缩小。现在我有一个比其他文件大的 tempdb 文件,我想更改它。

我怀疑要解决这个问题需要停机。

  1. 有没有办法在不停机的情况下做到这一点?

  2. 这个问题值得解决吗?我知道最佳实践怎么说,但是这个实例真的会导致除了丑陋之外的任何实际问题吗?

Tib*_*szi 8

EMPTYFILE 只是将所有页面传输到其他文件,因此您随后可以执行 ALTER DATABASE ... REMOVE FILE。这似乎不是我们想要的。

我不会担心这个,让它在下次重新启动时自行排序。请记住,tempdb 是根据 sys.master_files 所说的内容重新创建的。这是 tempdb 关于文件数量、位置、大小等的“模板”。

您可以使用 ALTER DATABASE ... MODIFY FILE 调整 sys.master_files 中的大小。如果您需要帮助,只需使用 SSMS、tempdb、属性,并将任何 tempdb 文件的大小调整为更大的大小。然后编写命令脚本并根据您的喜好进行调整。(在 GUI 中不指定较小大小的原因是它会生成一个 DBCC SHRINKFILE,它只(尝试)解决 tempdb 的当前大小,而对模板没有任何作用。完全有可能指定一个小于当前大小使用 ALTER DATABASE for tempdb 因为它只会影响“模板”而不是当前大小。