我有一个 50GB SQL 2008 数据库(其中只有 36 个是数据)和一个每晚重建的 24GB 分析服务器多维数据集。
多维数据集重建每晚都在 SQL 服务器上使用越来越多的 TempDB。昨晚 TempDB 数据文件在用完 TempDB 驱动器上的所有空间之前增长到大约 100GB。
我可以添加更多空间,但如果我能更多地了解这里发生的事情,我会感觉更好:
- 多维数据集重建如何/为什么使用 SQL 服务器上的 TempDB 空间?
- 有什么方法可以减少它使用的 TempDB 的数量,或者强制它在步骤之间“释放”tempdb,或者其他什么?
- 随着我的数据不断增长,我有什么方法可以估计它可能会继续使用的空间量吗?(基于我数据库中某些关键表的大小,还是什么?)
编辑:我能想到的这个特定数据库的唯一显着区别是他们为最终数据集使用了一些非常大、非常复杂的嵌套视图。如果这些复杂的视图是用来构建多维数据集的,那能解释高温数据库的使用吗?
在构建多维数据集时,您可以运行Adam Machanic 的 sp_WhoIsActive诊断工具来查看哪些查询正在分配 TempDB 中的空间。我录制了一个sp_WhoIsActive 教程视频来展示它是如何工作的。调用时包含@get_plans = 1 参数,您还将获得执行计划。通过这种方式,您可以准确了解使用 TempDB 的内容以及原因。