![在 MS SQL Server 中收缩 tempdb.mdf 是否安全?](https://linux22.com/image/605328/%E5%9C%A8%20MS%20SQL%20Server%20%E4%B8%AD%E6%94%B6%E7%BC%A9%20tempdb.mdf%20%E6%98%AF%E5%90%A6%E5%AE%89%E5%85%A8%EF%BC%9F.png)
嘿,
在安装在 Windows Server 2003 上的 MS SQL Server 2005 上,我的 TEMPDB.mdf 增大到了 42GB。
最后的日期变更是2013年1月31日晚上。
所以,我想知道缩小它是否可以?
答案1
我建议阅读 Technet 文章,“在 SQL Server 2005 中使用 tempdb”。我不建议尝试缩小 tempdb,因为它本质上是用作临时数据库,用于在 SQL 运行时存储查询的中间结果等,并且缩小操作可能甚至不会对 tempdb 起作用。暂时减小 tempdb 大小的方法不是缩小操作。只需重新启动 SQL 服务器 - SQL 将删除 tempdb 并复制模型数据库以创建新的 tempdb。如果磁盘空间是一个问题,这是我用来暂时重新控制 tempdb 的唯一方法。
如果 tempdb 不断增长到这个大小,那么您有一个数据库进程(或多个进程)正在同时处理 tempdb 中的大量数据,从而导致其增长。如果是这种情况,那么防止其将来增长到这么大的唯一方法是确定它是哪个进程并对其进行更改。如果这种增长是以前从未见过的一次性事件,那么您可能只需重新启动 SQL Server 而不必再担心它,但如果它不断达到这个大小,并且您无法确定原因或更改后端查询和存储过程以不充分利用 tempdb,那么您可能应该将 tempdb 大小设置为略大于 42 GB,以减少自动增长造成的碎片。
另请阅读“如何缩小 SQL Server 中的 tempdb 数据库”。它详细介绍了 3 种方法。您可以在不重新启动 SQL Server 的情况下执行其中的 2 种,但它们都不需要 tempdb 中的活动,而这在运行中的 SQL Server 上很难实现。
答案2
您还可以查看您的查询并重新编码,以减少它们对 tempdb 的影响。