SQLServer行版本資訊吃資料庫tempdb空間

ywxj_001發表於2021-12-13

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;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2847362/,如需轉載,請註明出處,否則將追究法律責任。

相關文章