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


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) также не учитываются при подсчете. Всегда 0 для оптимизированного для памяти xVelocity индекса columnstore.

in_row_used_page_count

bigint

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

in_row_reserved_page_count

bigint

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

lob_used_page_count

bigint

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

Количество больших объектов (LOB), используемых для хранения и управления данными индекса columnstore в секции.

lob_reserved_page_count

bigint

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

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

row_overflow_used_page_count

bigint

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

Всегда равно 0 для индекса columnstore.

row_overflow_reserved_page_count

bigint

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

Всегда равно 0 для индекса columnstore.

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, а также данные строки, превышающие размер страницы, представляют собой три типа единиц распределения, из которых состоит секция. Из представления каталога sys.allocation_units можно запрашивать метаданные по каждой единице распределения базы данных.

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

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

Разрешения

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

Примеры

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

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

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

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

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

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

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

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

USE AdventureWorks2012;
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

См. также

Справочник

Динамические административные представления и функции (Transact-SQL)

Динамические административные представления базы данных (Transact-SQL)