我的新组织中有一个60 GB的生产数据库。我们在这个数据库中隔夜发布了500份报告。我注意到所有报告脚本都在TempDB
中创建表,然后填充最终报告。 TempDB
大小为6 GB。没有为这些报告脚本设置依赖关系,这些脚本是从PowerShell调用的。
以这种方式广泛使用TempDB
是一种好习惯吗?或者,最好是在生产数据库本身中创建所有临时表,并在生成报告后删除它们?
谢谢, Roopesh
答案 0 :(得分:2)
临时表总是在TempDb中创建。但是,TempDb的大小不一定仅仅是临时表。 TempDb以各种方式使用
因此,很明显它正在各种SQL操作中使用,因此大小也会因其他原因而增长。但是,在您的情况下,如果您的TempDb有足够的空间来正常运行,并且您的内部进程使用TempDb来创建临时表,那么这不是问题。您可以将TempDb视为SQL 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复制而来的。