在我的新组织中,我们有一个60 GB的生产数据库。我们一夜之间从这个DB上运行了近500份报告。我注意到,所有的报表脚本都在TempDB中创建表,然后填充最终报告。TempDB大小为6GB。没有为这些报表脚本设置依赖项,这些脚本是从PowerShell调用的。
以这种方式广泛使用TempDB是一种良好的实践吗?还是最好在生产数据库本身中创建所有的暂存表,并在生成报表后删除它们?
谢谢,Roopesh
发布于 2015-12-23 14:35:41
临时表总是在TempDb中创建的。但是,TempDb的大小不需要仅由临时表造成。TempDb以各种方式使用。
因此,很明显,它正在各种SQL操作中使用,因此由于其他原因,大小也会增加。但是,在您的情况下,如果您的TempDb有足够的空间来正常运行,如果您的内部流程正在使用TempDb创建临时表,那么这不是一个问题。您可以将TempDb视为Server的厕所。
您可以使用下面的查询检查是什么导致TempDb的大小增加
SELECT
SUM (user_object_reserved_page_count)*8 as usr_obj_kb,
SUM (internal_object_reserved_page_count)*8 as internal_obj_kb,
SUM (version_store_reserved_page_count)*8 as version_store_kb,
SUM (unallocated_extent_page_count)*8 as freespace_kb,
SUM (mixed_extent_page_count)*8 as mixedextent_kb
FROM sys.dm_db_file_space_usage如果上面的查询显示,
您可以通过上面的脚本监视TempDb,并首先确定其增长的真正原因。然而,60 GB是一个很小的数据库,6GB的TempDB大小是相当可以接受的。
上面的部分答案是从我的other answer从SO复制的。
https://stackoverflow.com/questions/34333451
复制相似问题