Share via


sys.dm_tran_top_version_generators (Transact-SQL)

針對產生版本存放區中大部份版本的物件,傳回一份虛擬資料表。sys.dm_tran_top_version_generators 會傳回由 database_idrowset_id 分組的前 256 筆彙總記錄長度。sys.dm_tran_top_version_generators 會查詢 dm_tran_version_store 虛擬資料表來擷取資料。sys.dm_tran_top_version_generators 是執行效率不佳的檢視,因為這份檢視會查詢版本存放區,而版本存放區可能非常龐大。建議您使用這個函數,尋找版本存放區的最大取用者。

語法

sys.dm_tran_top_version_generators

傳回的資料表

資料行名稱

資料類型

描述

database_id

int

資料庫識別碼。

rowset_id

bigint

資料列集識別碼。

aggregated_record_length_in_bytes

int

在版本存放區中,每個 database_idrowset_id 配對的記錄長度總和。

權限

需要伺服器的 VIEW SERVER STATE 權限。

備註

由於 sys.dm_tran_top_version_generators 在掃描整個版本存放區時可能必須讀取許多頁面,因此執行 sys.dm_tran_top_version_generators 可能會影響系統的效能。

範例

下列範例使用的測試案例中有四筆並行交易正在 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT 選項都設為 ON 的資料庫中執行,而每一筆交易都由一個交易序號 (XSN) 識別。正在執行的交易包括:

  • XSN-57 是在可序列化隔離下執行的更新作業。

  • XSN-58 與 XSN-57 相同。

  • XSN-59 是在快照集隔離下執行的選取作業。

  • XSN-60 與 XSN-59 相同。

執行以下查詢:

SELECT
    database_id,
    rowset_id,
    aggregated_record_length_in_bytes
  FROM sys.dm_tran_top_version_generators;

以下為結果集:

database_id rowset_id            aggregated_record_length_in_bytes
----------- -------------------- ---------------------------------
9           72057594038321152    87
9           72057594038386688    33

此輸出顯示所有的版本都由 database_id9 建立,而且這些版本均由兩份資料表產生。