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 Azure Synapse Analytics 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 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