Sql server 2012 TempDB使用SQL Server 2012
在我的新组织中,我们有一个60 GB的生产数据库。我们在一夜之间从该数据库运行了500份报告。我注意到所有报告脚本都在Sql server 2012 TempDB使用SQL Server 2012,sql-server-2012,tempdb,Sql Server 2012,Tempdb,在我的新组织中,我们有一个60 GB的生产数据库。我们在一夜之间从该数据库运行了500份报告。我注意到所有报告脚本都在TempDB中创建表,然后填充最终报告TempDB大小为6 GB。没有为这些从PowerShell调用的报表脚本设置依赖项 以这种方式广泛使用TempDB是否是一种良好的做法?还是最好在生产数据库本身中创建所有临时表,并在生成报告后删除它们 谢谢, Roopesh总是在TempDb中创建临时表。但是,TempDb的大小不一定只由临时表决定。TempDb的使用方式多种多样 内部对
TempDB
中创建表,然后填充最终报告<代码>TempDB大小为6 GB。没有为这些从PowerShell调用的报表脚本设置依赖项
以这种方式广泛使用TempDB
是否是一种良好的做法?还是最好在生产数据库本身中创建所有临时表,并在生成报告后删除它们
谢谢,
Roopesh总是在TempDb中创建临时表。但是,TempDb的大小不一定只由临时表决定。TempDb的使用方式多种多样
- 内部对象(排序和假脱机、CTE、索引重建、哈希连接等)
- 用户对象(临时表、表变量)
- 版本存储(在触发器之后/代替触发器,MARS)
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
如果上面的查询显示
- 用户对象的数量越多,则意味着临时表、游标或临时变量的使用就越多
- 内部对象数量越多,表示查询计划使用了大量数据库。例如:分类、分组等
- 版本存储的数量越多,则显示事务运行时间长或事务吞吐量高
以上答案的一部分是从SO抄袭过来的。使用tempdb(明确地)没有什么错。tempdb通常是隐式使用的(即在您的控制之外)。