sys.dm_db_file_space_usage (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)База данных SQL в Microsoft Fabric

Возвращает сведения об использовании пространства для каждого файла данных в базе данных.

Note

Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_db_file_space_usage. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Название столбца Тип данных Описание
database_id smallint Идентификатор базы данных.

В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере.
file_id smallint Идентификатор файла.

file_id сопоставляется с file_idsys.dm_io_virtual_file_stats и fileid в sys.sysfiles.
filegroup_id smallint Применимо: SQL Server 2012 (11.x) и более поздних версий.

FILEGROUP_ID.
total_page_count bigint Применимо: SQL Server 2012 (11.x) и более поздних версий.

Общее количество страниц в файле данных.
allocated_extent_page_count bigint Применимо: SQL Server 2012 (11.x) и более поздних версий.

Общее количество страниц в выделенных экстентах в файле данных.
unallocated_extent_page_count bigint Общее количество страниц в нераспределенных экстентах в файле данных.

Неиспользуемые страницы в выделенных экстентах не включаются.
version_store_reserved_page_count bigint Общее количество страниц в однородных экстентах, размещенных для хранилища версий. Страницы хранилища версий никогда не размещаются из смешанных экстентов.

Страницы IAM не включены, так как они всегда выделяются из смешанных экстентов. PFS-cтраницы включаются, если они размещаются из однородного экстента.

Дополнительные сведения см. в разделе sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Общее количество страниц, выделенных из однородных экстентов для пользовательских объектов в базе данных. Неиспользуемые страницы из распределенного экстента включаются в счет.

Страницы IAM не включены, так как они всегда выделяются из смешанных экстентов. PFS-cтраницы включаются, если они размещаются из однородного экстента.

Столбец в total_pages можно использовать для возврата зарезервированного количества страниц каждой единицы выделения в объекте пользователя. Однако столбец total_pages содержит страницы IAM.
internal_object_reserved_page_count bigint Общее количество страниц в однородном экстенте, размещенных для внутренних объектов в файле. Неиспользуемые страницы из распределенного экстента включаются в счет.

Страницы IAM не включены, так как они всегда выделяются из смешанных экстентов. PFS-cтраницы включаются, если они размещаются из однородного экстента.

Не существует представления каталога или объекта DMO, возвращающего счетчик страниц каждого внутреннего объекта.
mixed_extent_page_count bigint Общее количество размещенных и освобожденных страниц в размещенном смешанном экстенте. Смешанный экстент содержит страницы, размещенные для различных объектов. Этот счетчик включает все IAM-страницы в файле.
modified_extent_page_count bigint Область применения: SQL Server 2016 (13.x) с пакетом обновления 2 (SP2) и более поздних версий.

Общее количество страниц, измененных в выделенных экстентах файла с момента последнего полного резервного копирования базы данных. Измененное количество страниц можно использовать для отслеживания количества разностных изменений в базе данных с момента последнего полного резервного копирования, чтобы решить, требуется ли разностная резервная копия.
pdw_node_id int применимо к: Azure Synapse Analytics, система платформы аналитики (PDW)

Идентификатор узла, на который находится это распределение.
distribution_id int применимо к: Azure Synapse Analytics, система платформы аналитики (PDW)

Уникальный числовой идентификатор, связанный с распределением.

Замечания

Счетчики страниц всегда находятся на уровне экстента. Таким образом, значения счетчика страниц всегда являются несколькими из восьми. Экстенты, содержащие страницы глобальной карты распределения (GAM) и общей глобальной карты распределения (SGAM), являются размещенными однородными экстентами. Они не включены в ранее описанные счетчики страниц. Дополнительные сведения о страницах и экстентах см . в руководстве по архитектуре pages и экстентов.

Содержимое текущего хранилища версий находится в sys.dm_tran_version_store. Страницы хранилища версий отслеживаются на уровне файла вместо уровня сеанса и уровня задачи, потому что они являются глобальными ресурсами. Сеанс может создавать версии, но версии не могут быть удалены при завершении сеанса. При очистке хранилища версий необходимо рассмотреть наиболее долго выполняющуюся транзакцию, которой нужен доступ к определенной версии. Самые длительные транзакции, связанные с очисткой хранилища версий, можно обнаружить, просмотрев столбец elapsed_time_seconds в sys.dm_tran_active_snapshot_database_transactions.

Частые изменения в столбце mixed_extent_page_count могут указывать на интенсивное использование страниц SGAM. Когда это происходит, можно обнаружить много ожиданий PAGELATCH_UP, в которых ресурсом ожидания является SGAM-страница. Дополнительные сведения см. в статьях sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) и sys.dm_os_latch_stats (Transact-SQL).

Пользовательские объекты

Следующие объекты включаются в счетчики страниц пользовательских объектов.

  • Пользовательские таблицы и индексы
  • Системные таблицы и индексы
  • Глобальные временные таблицы и индексы
  • Локальные временные таблицы и индексы
  • Табличные переменные
  • Таблицы, возвращаемые в функциях с табличным значением

Внутренние объекты

Внутренние объекты находятся только в tempdb. Следующие объекты включаются в счетчики страниц внутренних объектов:

  • рабочие таблицы для выполнения операций с курсорами и буферами, а также для хранения временных больших объектов (LOB);
  • рабочие файлы для таких операций, как хэш-соединение
  • Сортировка запусков

Кратности связей

От Кому Relationship
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id Один к одному

Permissions

Для SQL Server 2019 (15.x) и более ранних версий и Управляемый экземпляр SQL требуется VIEW SERVER STATE разрешение.

На SQL Server 2022 (16.x) и более поздних версиях требуется VIEW разрешение на состояние производительности сервера на сервере.

В базе данных SQL базовые, S0и S1 целей службы, а также для баз данных в эластичных пулах, требуется учетная запись администратора сервера сервера, учетная запись администратора Microsoft Entra или членство в роли сервера ##MS_ServerStateReader##. Для всех остальных целей службы базы данных SQL требуется разрешение VIEW DATABASE STATE на базу данных или членство в роли сервера ##MS_ServerStateReader##.

Examples

Определение объема свободного места в tempdb

Следующий запрос возвращает общее количество бесплатных страниц и общее свободное пространство в мегабайтах (МБ), доступное во всех файлах tempdbданных.

USE tempdb;
GO

SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

Определение объема пространства, используемого пользовательскими объектами

Следующий запрос возвращает общее количество страниц, используемых объектами пользователя, и общее пространство, используемое объектами пользователей.tempdb

USE tempdb;
GO

SELECT
    SUM(user_object_reserved_page_count) AS [user object pages used],
    (SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

См. также