sys.dm_db_file_space_usage (Transact-SQL)

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

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

Примечание.

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

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

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

file_id сопоставляется с file_id sys.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траницы включаются, если они размещаются из однородного экстента.

Столбец в представлении каталога sys.allocation_units можно использовать 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, Analytics Platform System (PDW)

Идентификатор узла, на который находится данное распределение.
distribution_id int Область применения: Azure Synapse Analytics, Analytics Platform System (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);
  • рабочие файлы для таких операций, как хэш-соединение
  • Сортировки

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

С дт. По Отношение
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id Взаимно-однозначный

Разрешения

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

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

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

Примеры

Определение объема свободного места в 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;

См. также