SQLServer行版本信息吃数据库tempdb空间

SELECT SUM(unallocated_extent_page_count) AS [free pages], 


(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]


FROM sys.dm_db_file_space_usage;


确定版本存储区使用的空间量


下面的查询将返回 tempdb 中版本存储区使用的总页数和总空间量 (MB)。


SELECT SUM(version_store_reserved_page_count) AS [version store pages used],


(SUM(version_store_reserved_page_count)*1.0/128) AS [version store space in MB]


FROM sys.dm_db_file_space_usage;


确定运行时间最长的事务


如果版本存储区使用了 tempdb 中的大量空间,则必须确定运行时间最长的事务。使用下面的查询可按顺序(事务的最长运行时间)列出活动事务。


SELECT transaction_id


FROM sys.dm_tran_active_snapshot_database_transactions 


ORDER BY elapsed_time_seconds DESC;


与联机索引操作无关的长时间运行的事务需要很大的版本存储区。此版本存储区保存自事务启动以来生成的所有版本。联机索引生成事务可能需要较长时间才能完成,但是使用了专用于联机索引操作的单独的版本存储区。因此,这些操作不会防止删除其他事务的版本。有关详细信息,请参阅行版本控制资源的使用情况。


确定内部对象使用的空间量


下面的查询将返回 tempdb 中内部对象使用的总页数和总空间量 (MB)。


SELECT SUM(internal_object_reserved_page_count) AS [internal object pages used],


(SUM(internal_object_reserved_page_count)*1.0/128) AS [internal object space in MB]


FROM sys.dm_db_file_space_usage;


确定用户对象使用的空间量


下面的查询将返回 tempdb 中用户对象使用的总页数和总空间量。


SELECT SUM(user_object_reserved_page_count) AS [user object pages used],


(SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]


FROM sys.dm_db_file_space_usage;


请使用浏览器的分享功能分享到微信等