Поделиться через


sys.dm_tran_version_store_space_usage (Transact-SQL)

Область применения: SQL Server 2016 (13.x) с пакетом обновления 2 (SP 2) и более поздних версий База данных SQL AzureНе поддерживается.Azure Synapse Analytics Analytics Не поддерживается. Platform System (PDW)

Возвращает таблицу, отображающую общее пространство в tempdb, используемое записями хранилища версий для каждой базы данных. sys.dm_tran_version_store_space_usage является эффективным и не дорогостоящим для выполнения, так как он не проходит по отдельным записям хранилища версий и возвращает совокупное пространство хранилища версий, потребляемое в tempdb для каждой базы данных.

Каждая версия записи хранится в виде двоичных данных вместе с некоторыми сведениями об отслеживании или состоянии. Как и в таблицах базы данных, записи в хранилище версий хранятся в страницах размером 8192 байта. Если запись превышает 8 192 байт, запись разбивается на две разные записи.

Так как запись версии хранится в двоичном виде, не возникает проблем с разными параметрами сортировки из разных баз данных. Используйте sys.dm_tran_version_store_space_usage для мониторинга и планирования размера tempdb на основе использования пространства хранилища версий баз данных в экземпляре SQL Server.

Имя столбца Тип данных Description
database_id int Идентификатор базы данных.

В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере.
reserved_page_count bigint Общее количество страниц, зарезервированных в tempdb для записей хранилища версий базы данных.
reserved_space_kb bigint Общее пространство, используемое в килобайтах в tempdb для записей хранилища версий базы данных.

Разрешения

В SQL Server требуется разрешение VIEW SERVER STATE.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.

Примеры

Следующий запрос можно использовать для определения пространства, потребляемого в tempdb, по хранилищу версий каждой базы данных в экземпляре SQL Server.

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

Вот результирующий набор.

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