sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

Область применения:yesSQL Server 2016 (13.x) и более поздних версий YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure

Предоставляет текущие сведения на уровне группы строк обо всех индексах columnstore в текущей базе данных.

Это расширяет представление каталога sys.column_store_row_groups (Transact-SQL).

Имя столбца Тип данных Описание
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 = INVISIBLE

1 = OPEN;

2 = CLOSED

3 = COMPRESSED

4 = TOMBSTONE

COMPRESSED — это единственное состояние, которое применяется к таблицам в памяти.
state_desc nvarchar(60) Описание состояния группы строк:

0 — НЕВИДИМая — созданная группа строк. Пример:
Группа строк в columnstore невидимая во время сжатия данных. После завершения сжатия переключатель метаданных изменяет состояние группы строк columnstore с INVISIBLE на COMPRESSED и состояние группы строк deltastore с CLOSED на TOMBSTONE.

1 — OPEN — группа строк deltastore, которая принимает новые строки. Открытая группа строк остается в формате rowstore и не сжимается в формат columnstore.

2 - CLOSED — группа строк в разностном хранилище, содержащая максимальное количество строк, и ожидает, пока процесс перемещения кортежа будет сжимать его в columnstore.

3 — COMPRESSED — группа строк, сжатая с помощью сжатия columnstore и хранящейся в columnstore.

4 - TOMBSTONE - группа строк, которая ранее находилась в deltastore и больше не используется.
total_rows bigint Количество строк, которые физически хранятся в группе строк. Для сжатых групп строк. Включает строки, помеченные как удаленные.
deleted_rows bigint Количество строк, физически хранящихся в сжатой группе строк и помеченных для удаления.

Для групп строк, которые находятся в разностном хранилище, значение равно 0.
size_in_bytes bigint Объединенный размер (в байтах) всех страниц в этой группе строк. Этот размер не включает размер, необходимый для хранения метаданных или общих словарей.
trim_reason tinyint Причина, из-за которой группа строк COMPRESSED была меньше максимального числа строк.

0 — UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1 — NO_TRIM

2. МАССОВАЯ ЗАГРУЗКА

3 . REORG

4 — DICTIONARY_SIZE

5 — MEMORY_LIMITATION

6 — RESIDUAL_ROW_GROUP

7 - STATS_MISMATCH

8. РАЗЛИВ

9 — 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 до 1 миллиона.

9 — AUTO_MERGE: операция слияния кортежа Mover, выполняемая в фоновом режиме, консолидировала одну или несколько групп строк в эту группу строк.
transition_to_compressed_state tinyint Показывает, как эта группа строк была перемещена из deltastore в сжатое состояние в columnstore.

1- NOT_APPLICABLE

2 — INDEX_BUILD

3— TUPLE_MOVER

4 — REORG_NORMAL

5 — REORG_FORCED

6. МАССОВАЯ ЗАГРУЗКА

7. СЛИЯНИЕ
transition_to_compressed_state_desc nvarchar(60) 1 — NOT_APPLICABLE — операция не применяется к deltastore. Или группа строк была сжата до обновления до SQL Server 2016 (13.x), в этом случае журнал не сохраняется.

2 — INDEX_BUILD — создание индекса или перестроение индекса сжимает группу строк.

3 — TUPLE_MOVER — перемещение кортежей, запущенное в фоновом режиме, сжимает группу строк. Перемещение кортежей происходит после изменения состояния группы строк с OPEN на CLOSED.

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 не используется:
а. при перемещении разностной группы строк в columnstore и наличии одного или нескольких некластеризованных индексов в индексе columnstore — в этом случае оптимизация VertiPaq пропускается, чтобы свести к минимуму изменения индекса сопоставления;
b. для индексов columnstore в таблицах, оптимизированных для памяти.

0 = нет

1 = да
Поколения BIGINT Создание группы строк, связанное с этой группой строк.
created_time datetime2 Время создания этой группы строк.

NULL — для индекса columnstore в таблице в памяти.
closed_time datetime2 Время закрытия этой группы строк.

NULL — для индекса columnstore в таблице в памяти.
     

Результаты

Возвращает одну строку для каждой группы строк в текущей базе данных.

Разрешения

Требуется CONTROL разрешение на таблицу и VIEW DATABASE STATE разрешение для базы данных.

Примеры

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  
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 (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)