sys.dm_db_partition_stats (Transact-SQL)
Возвращает страницу и сведения о количестве строк для всех секций текущей базы данных.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Имя столбца |
Тип данных |
Описание |
---|---|---|
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)