Udostępnij za pośrednictwem


sys.dm_tran_version_store_space_usage (Transact-SQL)

Dotyczy: programu SQL Server 2016 (13.x) SP 2 i nowszych azure SQL Database nieobsługiwane. usługa Azure Synapse Analytics nieobsługiwana. system platformy Analytics (PDW)

Zwraca tabelę, która wyświetla łączną ilość miejsca w tempdb używanych przez rekordy magazynu wersji dla każdej bazy danych. sys.dm_tran_version_store_space_usage jest wydajna i nie jest kosztowna do uruchomienia, ponieważ nie przechodzi przez poszczególne rekordy magazynu wersji i zwraca zagregowane miejsce magazynu wersji używane w bazie danych tempdb na bazę danych.

Każdy rekord w wersji jest przechowywany jako dane binarne wraz z pewnymi informacjami o śledzeniu lub stanie. Podobnie jak w przypadku rekordów w tabelach bazy danych, rekordy magazynu wersji są przechowywane na stronach 8192-bajtowych. Jeśli rekord przekracza 8192 bajty, rekord jest podzielony na dwa różne rekordy.

Ponieważ wersja rekordu jest przechowywana jako plik binarny, nie ma problemów z różnymi sortowaniami z różnych baz danych. Użyj sys.dm_tran_version_store_space_usage do monitorowania i planowania rozmiaru tempdb na podstawie użycia miejsca w magazynie wersji baz danych w wystąpieniu programu SQL Server.

Nazwa kolumny Typ danych Opis
database_id Identyfikator bazy danych.

W usłudze Azure SQL Database wartości są unikatowe w ramach pojedynczej bazy danych lub elastycznej puli, ale nie w obrębie serwera logicznego.
reserved_page_count bigint Łączna liczba stron zarezerwowanych w tempdb dla rekordów magazynu wersji bazy danych.
reserved_space_kb bigint Łączna ilość miejsca używanego w kilobajtach w tempdb dla rekordów magazynu wersji bazy danych.

Uprawnienia

W programie SQL Server wymagane jest VIEW SERVER STATE uprawnienia.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Przykłady

Poniższe zapytanie może służyć do określania miejsca używanego w tempdb, według magazynu wersji każdej bazy danych w wystąpieniu programu SQL Server.

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

Oto zestaw wyników.

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