据我所知系统数据库用于保存临时表、中间结果和其他临时信息。
在我的一个数据库实例中,我有一个临时数据库,它看起来非常大(30GB)。这个数据库已经超过一周没有被修改了(如 mdf 文件中的“上次修改日期”)。临时数据库在这么长的时间内保持这么大是正常的吗?在我看来,它应该经常更新,并很快释放它使用的空间……
是我偏离了主题还是 SQL Server 做了一些奇怪的事情?
仅供参考:这是一个 SharePoint 2010 数据库,不确定是否有区别。
答案1
TempDB 不会自动缩减,您也不能将 TempDB 设置为自动缩减。如果您的 TempDB 增长到 30GB,它增长到这个大小可能是有原因的,因此如果您确实将其调整为更小,它很可能会再次增长到这个大小。
查看以下链接以获取有关配置 TempDB 的一些建议:
答案2
SQL Server 数据库文件不会自动缩小,除非您告诉它们这样做。(我不建议这样做,因为反复增大/缩小会导致大量磁盘碎片。)换句话说,找出您的 tempdb 的大小,并为此做好计划。将其数据文件设置为从大到小(因为 SQL Server 启动时会从头开始重新创建)通常是推荐的方法。
答案3
尽管文件大小列为 30GB,但它们可能被空白空间填充,实际上并不包含 30GB 的文件大小。TEMPDB 在某些时候会增长到 30GB,因为它需要那么多空间来执行某些查询。
我建议您将 TEMPDB 文件大小设置为 30GB - 这样可以在 SQL SERVER 重新启动时为您预先设置 TEMPDB 的大小,因为每次重新启动 SQL Server 时都会重新创建 TEMPDB。通过预先设置 TEMPDB 的大小,您可以避免在最初导致数据库增长的活动期间数据库再次自动增长所产生的任何开销。
这一页,http://sqlserverpedia.com/wiki/TempDB,第 4 部分将介绍预先确定临时数据库的大小。