Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2016 (13.x) и более поздних версийУправляемого экземпляра
Базы данных
SQL Azure SQL Azure
Предоставляет текущие сведения об уровне группы строк обо всех индексах columnstore в текущей базе данных.
Это динамическое административное представление расширяет представление каталога sys.column_store_row_groups.
| Имя столбца | Тип данных | Description |
|---|---|---|
object_id |
int | Идентификатор базовой таблицы. |
index_id |
int | Идентификатор этого индекса columnstore в object_id таблице. |
partition_number |
int | Идентификатор секции таблицы, содержащей row_group_id. Вы можете использовать partition_number для присоединения к этому динамическому административному представлению sys.partitions |
row_group_id |
int | Идентификатор этой группы строк. Для секционированных таблиц значение уникально в разделе.-1 для хвоста в памяти. |
delta_store_hobt_id |
bigint | Hobt_id для группы строк в разностном хранилище.NULL Значение , если группа строк не хранится в разностном хранилище.NULL для хвоста таблицы в памяти. |
state |
tinyint | Связанный state_descriptionномер идентификатора.0 = INVISIBLE1= OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONECOMPRESSED — единственное состояние, которое применяется к таблицам в памяти. |
state_desc |
nvarchar(60) | Описание состояния группы строк:0
-
INVISIBLE — созданная группа строк. Рассмотрим пример.Группа строк в columnstore находится INVISIBLE во время сжатия данных. После завершения сжатия переключение метаданных изменяет состояние группы строк columnstore в INVISIBLECOMPRESSEDзначение , а состояние группы строк deltastore — на CLOSEDTOMBSTONE.1
-
OPEN — группа строк deltastore, принимаюющая новые строки. Открытая группа строк по-прежнему находится в формате rowstore и не сжимается до формата columnstore.2
-
CLOSED — Группа строк в разностном хранилище, содержащая максимальное количество строк, и ожидает, чтобы процесс перемещения кортежей сжимал его в columnstore.3
-
COMPRESSED — группа строк, сжатая с сжатием columnstore и хранящейся в columnstore.4
-
TOMBSTONE — Группа строк, которая ранее находилась в deltastore и больше не используется. |
total_rows |
bigint | Количество строк, которые физически хранятся в группе строк. Для сжатых групп строк. Включает строки, помеченные как удаленные. |
deleted_rows |
bigint | Количество строк, физически хранящихся в сжатой группе строк и помеченных для удаления.0 для групп строк, входящих в разностное хранилище.Для некластеризованных индексов columnstore это значение не включает удаленные строки, хранящиеся в буфере удаления. Дополнительные сведения и поиск количества удаленных строк в буфере удаления см. в sys.internal_partitions. |
size_in_bytes |
bigint | Объединенный размер (в байтах) всех страниц в этой группе строк. Этот размер не включает размер, необходимый для хранения метаданных или общих словарей. |
trim_reason |
tinyint | Причина, которая активировала COMPRESSED группу строк, меньше максимального числа строк.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION1 - NO_TRIM2 - BULKLOAD3 - REORG4 - DICTIONARY_SIZE5 - MEMORY_LIMITATION6 - RESIDUAL_ROW_GROUP7 - STATS_MISMATCH8 - SPILLOVER9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) |
trim_reasonОписание .0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: произошло при обновлении предыдущей версии SQL Server.1
-
NO_TRIM: группа строк не была обрезана. Группа строк была сжата с максимальным числом строк 1 048 576. Число строк может быть меньше, если подмножество строк было удалено после закрытия разностной группы строк2
-
BULKLOAD: размер пакета массовой загрузки ограничивает количество строк.3
-
REORG: принудительное сжатие в REORG составе команды.4
-
DICTIONARY_SIZE: размер словаря вырос слишком велик, чтобы сжать все строки вместе.5
-
MEMORY_LIMITATION: недостаточно доступной памяти для сжатия всех строк вместе.6
-
RESIDUAL_ROW_GROUP: закрыто в рамках последней группы строк со строками < 1 млн во время операции сборки индекса.Примечание. Сборка секции с несколькими ядрами может привести к нескольким обрезкам этого типа. 7
-
STATS_MISMATCH: только для columnstore в таблице в памяти. Если статистика неправильно указала >= 1 миллион квалифицированных строк в хвосте, но мы обнаружили меньше, сжатые группы строк будут иметь < 1 миллион строк8
-
SPILLOVER: только для columnstore в таблице в памяти. Если хвост имеет > 1 миллион квалифицированных строк, последний пакет оставшихся строк сжимается, если число составляет от 100 000 до 1 миллиона9
-
AUTO_MERGE: операция слияния Кортежа Mover, выполняемая в фоновом режиме, консолидированная одна или несколько групп строк в эту группу строк. |
transition_to_compressed_state |
tinyint | Показывает, как эта группа строк была перемещена из deltastore в сжатое состояние в columnstore.1 - NOT_APPLICABLE2 - INDEX_BUILD3 - TUPLE_MOVER4 - REORG_NORMAL5 - REORG_FORCED6 - BULKLOAD7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE — операция не применяется к deltastore. Кроме того, группа строк была сжата до обновления до SQL Server 2016 (13.x), в котором журнал не сохраняется.2
-
INDEX_BUILD — создание индекса или перестроение индекса сжатой группы строк.3
-
TUPLE_MOVER — Перемещение кортежа, выполняемого в фоновом режиме, сжимает группу строк. Перемещение кортежей происходит после изменения состояния группы строк на OPENCLOSED.4
-
REORG_NORMAL — операция реорганизации, ALTER INDEX ... REORGперемещенная CLOSED группа строк из deltastore в columnstore. Это произошло до того, как кортеж-перемещение было время переместить группу строк.5
-
REORG_FORCED — Эта группа строк была открыта в deltastore и была вынуждена в columnstore, прежде чем она имела полное количество строк.6
-
BULKLOAD — операция массового загрузки сжимает группу строк непосредственно без использования deltastore.7
-
MERGE — Операция слияния объединила одну или несколько групп строк в эту группу строк, а затем выполнила сжатие columnstore. |
has_vertipaq_optimization |
bit | Оптимизация VertiPaq улучшает сжатие columnstore путем изменения порядка строк в группе строк для повышения сжатия. Эта оптимизация выполняется автоматически в большинстве случаев. Существует два случая, когда оптимизация VertiPaq не используется: a. при перемещении разностной группы строк в columnstore и наличии одного или нескольких некластеризованных индексов в индексе columnstore— в этом случае оптимизация VertiPaq пропускается, чтобы свести к минимуму изменения индекса сопоставления; b. для индексов columnstore в таблицах, оптимизированных для памяти. 0 = Нет1 = Да |
generation |
bigint | Поколение групп строк, связанное с этой группой строк. |
created_time |
datetime2 | Время создания этой группы строк.NULL — для индекса columnstore в таблице в памяти. |
closed_time |
datetime2 | Время времени закрытия этой группы строк.NULL — для индекса columnstore в таблице в памяти. |
Results
Возвращает одну строку для каждой группы строк в текущей базе данных.
Permissions
Требуется CONTROL разрешение на таблицу и VIEW DATABASE STATE разрешение на базу данных.
Разрешения для SQL Server 2022 и более поздних версий
Необходимо разрешение VIEW DATABASE PERFORMANCE STATE на базу данных.
Examples
A. Вычисление фрагментации, чтобы определить, когда реорганизовать или перестроить индекс columnstore
Для индексов columnstore процент удаленных строк является хорошей мерой фрагментации в группе строк. Если фрагментация составляет 20 % или больше, удалите удаленные строки. Дополнительные примеры см. в статье "Оптимизация обслуживания индекса", чтобы повысить производительность запросов и сократить потребление ресурсов.
Этот пример объединяется sys.dm_db_column_store_row_group_physical_stats с другими системными таблицами, а затем вычисляет Fragmentation столбец как оценку эффективности каждой группы строк в текущей базе данных. Чтобы найти информацию о одной таблице, удалите дефисы комментариев перед WHERE предложением и укажите имя таблицы.
SELECT i.object_id,
object_name(i.object_id) AS TableName,
i.name AS IndexName,
i.index_id,
i.type_desc,
CSRowGroups.*,
100 * (ISNULL(deleted_rows, 0)) / NULLIF (total_rows, 0) AS 'Fragmentation'
FROM sys.indexes AS i
INNER JOIN sys.dm_db_column_store_row_group_physical_stats AS CSRowGroups
ON i.object_id = CSRowGroups.object_id
AND i.index_id = CSRowGroups.index_id
-- WHERE object_name(i.object_id) = 'table_name'
ORDER BY object_name(i.object_id), i.name, row_group_id;
Связанный контент
- Представления каталога объектов (Transact-SQL)
- Представления системного каталога (Transact-SQL)
- Архитектура индексов columnstore
- Часто задаваемые вопросы о запросах к системному каталогу SQL Server
- sys.columns
- sys.all_columns
- sys.computed_columns
- sys.column_store_dictionaries
- sys.column_store_segments