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;