Freigeben über


sys.dm_tran_version_store_space_usage (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) SP 2 und höher Azure SQL-Datenbank Wird nicht unterstützt. Azure Synapse Analytics Wird nicht unterstützt. Analytics Platform System (PDW)

Gibt eine Tabelle zurück, in der gesamter Speicherplatz in tempdb angezeigt wird, der von Versionsspeichereinträgen für jede Datenbank verwendet wird. sys.dm_tran_version_store_space_usage ist effizient und nicht teuer auszuführen, da sie nicht durch einzelne Versionsspeichereinträge navigiert und aggregierten Versionsspeicherplatz zurückgibt, der in tempdb pro Datenbank verbraucht wird.

Jeder versionsierte Datensatz wird zusammen mit einigen Nachverfolgungs- oder Statusinformationen als Binärdaten gespeichert. Ähnlich wie Datensätze in Datenbanktabellen werden die Versionsspeicherdatensätze in 8192 Bytes umfassenden Seiten gespeichert. Falls ein Datensatz größer ist als 8192 Bytes, wird er in zwei unterschiedliche Datensätze geteilt.

Da der Versionsdatensatz als Binärdaten gespeichert wird, treten keine Probleme mit unterschiedlichen Sortierungen aus unterschiedlichen Datenbanken auf. Verwenden Sie sys.dm_tran_version_store_space_usage , um die tempdb-Größe basierend auf der Versionsspeicherplatznutzung von Datenbanken in einer SQL Server-Instanz zu überwachen und zu planen.

Spaltenname Datentyp Beschreibung
database_id int Datenbank-ID der Datenbank.

In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines Pools für elastische Datenbanken eindeutig, aber nicht innerhalb eines logischen Servers.
reserved_page_count bigint Die Gesamtanzahl der in tempdb reservierten Seiten für Versionsspeicherdatensätze der Datenbank.
reserved_space_kb bigint Gesamtspeicherplatz, der in Kb in tempdb für Versionsspeicherdatensätze der Datenbank verwendet wird.

Berechtigungen

Auf SQL Server ist die VIEW SERVER STATE-Berechtigung erforderlich.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Beispiele

Die folgende Abfrage kann verwendet werden, um den in tempdb verbrauchten Speicherplatz anhand des Versionsspeichers jeder Datenbank in einer SQL Server-Instanz zu ermitteln.

SELECT 
  DB_NAME(database_id) as 'Database Name',
  reserved_page_count,
  reserved_space_kb 
FROM sys.dm_tran_version_store_space_usage;  

Hier sehen Sie das Ergebnis.

Database Name            reserved_page_count reserved_space_kb  
------------------------ -------------------- -----------  
msdb                      0                    0             
AdventureWorks2022        10                   80             
AdventureWorks2022DW      0                    0             
WideWorldImporters        20                   160             

Siehe auch

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit Transaktionen (Transact-SQL)