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, die den Gesamtraum in tempdb anzeigt, die von Versionsspeichereinträgen für jede Datenbank verwendet werden. 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. Wenn ein Datensatz 8.192 Byte überschreitet, wird der Datensatz auf zwei verschiedene Datensätze aufgeteilt.

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 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 in Kilobyte in tempdb für Versionsspeicherdatensätze der Datenbank.

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 tempdbverbrauchten 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