sys.dm_db_partition_stats (Transact-SQL)

Возвращает страницу и информацию о количестве строк для каждой секции текущей базы данных.

Имя столбца

Тип данных

Описание

partition_id

bigint

Идентификатор секции. Является уникальным в пределах базы данных. Данное значение совпадает со значением partition_id представления каталога sys.partitions

object_id

int

Идентификатор таблицы или индексированного представления, в которое входит данная секция.

index_id

int

Идентификатор кучи или индекса, в который входит данная секция.

0 = куча

1 = кластеризованный индекс

> 1 = некластеризованный индекс

partition_number

int

Номер секции внутри индекса или кучи (нумерация начинается с 1).

in_row_data_page_count

bigint

Количество страниц, используемых для хранения данных, содержащихся в строках данной секции. Если секция является частью кучи, то данное значение отображает количество страниц данных в куче. Если секция является частью индекса, то данное значение отображает количество страниц на конечном уровне. (неконечные страницы сбалансированного дерева при подсчете не учитываются.) Страницы карты распределения индекса (IAM) также не учитываются при подсчете.

in_row_used_page_count

bigint

Количество страниц, используемых для хранения и управления данными, содержащимися в строках данной секции. В данном случае при подсчете учитываются неконечные страницы сбалансированного дерева, IAM-страницы, а также все страницы, включенные в столбец in_row_data_page_count.

in_row_reserved_page_count

bigint

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

lob_used_page_count

bigint

Количество страниц, используемых для хранения и управления данными типа text, ntext, image, varchar(max), nvarchar(max), varbinary(max) и xml, хранящимися вне строк секции. IAM-страницы учитываются.

lob_reserved_page_count

bigint

Общее количество страниц, зарезервированных для хранения и управления данными типа text, ntext, image, varchar(max), nvarchar(max), varbinary(max) и xml, хранящимися вне строк секции (учитываются как используемые, так и не используемые страницы). IAM-страницы учитываются.

row_overflow_used_page_count

bigint

Количество страниц, используемых для хранения и управления данными типа varchar, nvarchar, varbinary и sql_variant, хранящимися вне строк секции. IAM-страницы учитываются.

row_overflow_reserved_page_count

bigint

Общее количество страниц, зарезервированных для хранения и управления данными типа varchar, nvarchar, varbinary и sql_variant, хранящимися вне строк секции (учитываются как используемые, так и не используемые страницы). IAM-страницы учитываются.

used_page_count

bigint

Общее число страниц, используемых в секции. Вычисляется следующим образом: in_row_used_page_count + lob_used_page_count + row_overflow_used_page_count.

reserved_page_count

bigint

Общее число страниц, зарезервированных в секции. Вычисляется следующим образом: in_row_reserved_page_count + lob_reserved_page_count + row_overflow_reserved_page_count.

row_count

bigint

Приблизительное количество строк в секции.

Замечания

Оператор sys.dm_db_partition_stats используется для отображения сведений о дисковом пространстве, используемом для хранения данных, находящихся в строках, данных LOB и превышающих размер страницы данных строки во всех секциях базы данных, а также для управления ими. Для каждой секции отображается одна строка.

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

Данные в строках, данные LOB, а также данные строки, превышающие размер страницы, представляют собой три типа единиц распределения, из которых состоит секция. Дополнительные сведения о единицах распределения см. в разделе Организация таблиц и индексов. Из представления каталога sys.allocation_units можно извлекать метаданные по каждой единице распределения базы данных.

Если куча или индекс не имеют делений, то они состоят из одной секции (с номером 1); поэтому для каждой такой кучи или индекса возвращается только одна строка. Дополнительные сведения о секциях см. в разделе Организация таблиц и индексов. Из представления каталога sys.partitions можно извлекать метаданные по каждой секции таблиц и индексов базы данных.

Общее количество секций таблицы или индекса может быть получено путем суммирования результатов для всех секций.

Разрешения

Для работы с динамическим административным представлением sys.dm_db_partition_stats требуется разрешение VIEW DATABASE STATE. Дополнительные сведения о предоставлении разрешений для динамических административных представлений см. в разделе Динамические административные представления и функции (Transact-SQL).

Примеры

А. Выведение результатов подсчета для всех секций во всех индексах и кучах базы данных

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

USE AdventureWorks2008R2;
GO
SELECT * FROM sys.dm_db_partition_stats;
GO

Б. Выведение результатов подсчета для всех секций таблицы и ее индексов

В следующем примере выводятся результаты подсчета для всех секций таблицы HumanResources.Employee и ее индексов.

USE AdventureWorks2008R2;
GO
SELECT * FROM sys.dm_db_partition_stats 
WHERE object_id = OBJECT_ID('HumanResources.Employee');
GO

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

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

USE AdventureWorks2008R2;
GO
SELECT SUM(used_page_count) AS total_number_of_used_pages, 
    SUM (row_count) AS total_number_of_rows 
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('HumanResources.Employee')    AND (index_id=0 or index_id=1);
GO