我的新组织中有一个 60 GB 的生产数据库。我们在一夜之间从这个数据库中运行了 500 份报告。我注意到所有报告脚本都在其中创建表格TempDB
,然后填充最终报告。TempDB
大小为 6 GB。没有为这些从 PowerShell 调用的报告脚本设置依赖项。
TempDB
以这种方式广泛使用是一种好习惯吗?还是在生产数据库本身中创建所有暂存表并在生成报告后删除它们更好?
谢谢, 鲁佩什
我的新组织中有一个 60 GB 的生产数据库。我们在一夜之间从这个数据库中运行了 500 份报告。我注意到所有报告脚本都在其中创建表格TempDB
,然后填充最终报告。TempDB
大小为 6 GB。没有为这些从 PowerShell 调用的报告脚本设置依赖项。
TempDB
以这种方式广泛使用是一种好习惯吗?还是在生产数据库本身中创建所有暂存表并在生成报告后删除它们更好?
谢谢, 鲁佩什
临时表总是在 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 是一个相当小的数据库,6 GB 的 TempDB 大小是可以接受的。
上述答案的一部分是从我的其他答案中复制的。