sys. dm_db_column_store_row_group_physical_stats (Transact-SQL)sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Предоставляет текущие сведения на уровне группы строк о всех индексах columnstore в текущей базе данных.Provides current rowgroup-level information about all of the columnstore indexes in the current database.

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

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
object_idobject_id intint Идентификатор базовой таблицы.ID of the underlying table.
index_idindex_id intint ИДЕНТИФИКАТОР этого индекса columnstore в object_id таблице.ID of this columnstore index on object_id table.
partition_numberpartition_number intint Идентификатор секции таблицы, содержащей row_group_id.ID of the table partition that holds row_group_id. Partition_number можно использовать для соединения этого динамического административного представления с представлением sys.partitions.You can use partition_number to join this DMV to sys.partitions.
row_group_idrow_group_id intint Идентификатор этой группы строк.ID of this row group. Для секционированных таблиц значение value является уникальным в пределах секции.For partitioned tables, value is unique within the partition.

-1 для хвоста в памяти.-1 for an in-memory tail.
delta_store_hobt_iddelta_store_hobt_id bigintbigint Hobt_id для группы строк в разностном хранилище.The hobt_id for a row group in the delta store.

Значение NULL, если группа строк не находится в разностном хранилище.NULL if row group is not in the delta store.

Значение NULL для заключительного фрагмента таблицы в памяти.NULL for tail of an in-memory table.
сstate tinyinttinyint ИДЕНТИФИКАЦИОНный номер, связанный state_description.ID number associated state_description.

0 = INVISIBLE0 = INVISIBLE

1 = OPEN;1 = OPEN

2 = CLOSED2 = CLOSED

3 = COMPRESSED3 = COMPRESSED

4 = ЗАХОРОНЕНИЕ4 = TOMBSTONE

Сжатие является единственным состоянием, которое применяется к таблицам в памяти.COMPRESSED is the only state that applies to in-memory tables.
state_descstate_desc nvarchar (60)nvarchar(60) Описание состояния группы строк:Description of the row group state:

Невидимая — группа строк, которая строится.INVISIBLE -A row group that is being built. Например:For example:
Группа строк в columnstore невидима во время сжатия данных.A row group in the columnstore is INVISIBLE while the data is being compressed. После завершения сжатия параметр метаданных изменяет состояние группы строк columnstore с невидимого на сжатый и состояние группы строк deltastore с "ЗАКРЫТо" на "ЗАХОРОНЕНие".When the compression is finished a metadata switch changes the state of the columnstore row group from INVISIBLE to COMPRESSED, and the state of the deltastore row group from CLOSED to TOMBSTONE.

OPEN — deltastore группа строк, которая принимает новые строки.OPEN - A deltastore row group that is accepting new rows. Открытая группа строк остается в формате rowstore и не сжимается в формат columnstore.An open row group is still in rowstore format and has not been compressed to columnstore format.

ЗАКРЫТо — группа строк в разностном хранилище, которая содержит максимальное количество строк, и ожидает, пока процесс перемещения кортежа сжимает его в columnstore.CLOSED - A row group in the delta store that contains the maximum number of rows, and is waiting for the tuple mover process to compress it into the columnstore.

СЖАТЫЙ — группа строк, которая сжимается с помощью сжатия columnstore и хранится в columnstore.COMPRESSED - A row group that is compressed with columnstore compression and stored in the columnstore.

ЗАХОРОНЕНие — группа строк, которая ранее была в deltastore и больше не используется.TOMBSTONE - A row group that was formerly in the deltastore and is no longer used.
total_rowstotal_rows bigintbigint Количество строк, которые физически хранятся в группе строк.Number of rows physical stored in the row group. Для сжатых групп строк.For compressed row groups. Включает строки, помеченные как удаленные.Includes the rows that are marked deleted.
deleted_rowsdeleted_rows bigintbigint Количество строк, физически хранящихся в сжатой группе строк и помеченных для удаления.Number of rows physically stored in a compressed row group that are marked for deletion.

Для групп строк, которые находятся в разностном хранилище, значение равно 0.0 for row groups that are in the delta store.
size_in_bytessize_in_bytes bigintbigint Объединенный размер всех страниц в данной группе строк (в байтах).Combined size, in bytes, of all the pages in this row group. Этот размер не включает размер, необходимый для хранения метаданных или общих словарей.This size does not include the size required to store metadata or shared dictionaries.
trim_reasontrim_reason tinyinttinyint Причина, по которой СЖАТая группа строк была активирована, меньше максимального количества строк.Reason that triggered the COMPRESSED row group to have less than the maximum number of rows.

0 — UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION

1 — NO_TRIM1 - NO_TRIM

2 — BULKLOAD2 - BULKLOAD

3 — REORG3 - REORG

4 — DICTIONARY_SIZE4 - DICTIONARY_SIZE

5 — MEMORY_LIMITATION5 - MEMORY_LIMITATION

6 — RESIDUAL_ROW_GROUP6 - RESIDUAL_ROW_GROUP

7 — STATS_MISMATCH7 - STATS_MISMATCH

8 — ПЕРЕБРОСКИ8 - SPILLOVER
trim_reason_desctrim_reason_desc nvarchar (60)nvarchar(60) Описание trim_reason.Description of trim_reason.

0-UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: произошла ошибка при обновлении предыдущей версии SQL ServerSQL Server.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Occurred when upgrading from the previous version of SQL ServerSQL Server.

1 — NO_TRIM: группа строк не обрезается.1 - NO_TRIM: The row group was not trimmed. Группа строк была сжата до 1 048 476 строк.The row group was compressed with the maximum of 1,048,476 rows. Число строк может быть меньше, если подмножество строк было удалено после закрытия разностного группы строкThe number of rows could be less if a subset of rows was deleted after delta rowgroup was closed

2 — BULKLOAD: размер пакета массовой загрузки ограничен количеством строк.2 - BULKLOAD: The bulk-load batch size limited the number of rows.

3 — REORG: принудительное сжатие в составе команды REORG.3 - REORG: Forced compression as part of REORG command.

4 — DICTIONARY_SIZE: размер словаря слишком велик для сжатия всех строк вместе.4 - DICTIONARY_SIZE: Dictionary size grew too large to compress all of the rows together.

5 — MEMORY_LIMITATION: недостаточно свободной памяти для сжатия всех строк.5 - MEMORY_LIMITATION: Not enough available memory to compress all the rows together.

6-RESIDUAL_ROW_GROUP: закрывается как часть последней группы строк со строками < 1 000 000 во время операции построения индекса6 - RESIDUAL_ROW_GROUP: Closed as part of last row group with rows < 1 million during index build operation

STATS_MISMATCH: только для columnstore в таблице в памяти.STATS_MISMATCH: Only for columnstore on in-memory table. Если статистика неправильно указывает >= 1 000 000 уточняющих строк в заключительном фрагменте, но было обнаружено меньшее число, сжатая группы строк будет содержать < 1 000 000 строк.If stats incorrectly indicated >= 1 million qualified rows in the tail but we found fewer, the compressed rowgroup will have < 1 million rows

ПЕРЕБРОСКИ: только для columnstore в таблице в памяти.SPILLOVER: Only for columnstore on in-memory table. Если в хвосте имеется > 1 000 000 подходящих строк, то оставшиеся строки оставшихся пакетов сжимаются, если число составляет от 100 КБ до 1 000 000If tail has > 1 million qualified rows, the last batch remaining rows are compressed if the count is between 100k and 1 million
transition_to_compressed_statetransition_to_compressed_state tinyint;tinyint Показывает, как этот группы строк был перемещен из deltastore в сжатое состояние в columnstore.Shows how this rowgroup got moved from the deltastore to a compressed state in the columnstore.

1 — NOT_APPLICABLE1- NOT_APPLICABLE

2 — INDEX_BUILD2 - INDEX_BUILD

3 — TUPLE_MOVER3 - TUPLE_MOVER

4 — REORG_NORMAL4 - REORG_NORMAL

5 — REORG_FORCED5 - REORG_FORCED

6 — BULKLOAD6 - BULKLOAD

7. СЛИЯНИЕ7 - MERGE
transition_to_compressed_state_desctransition_to_compressed_state_desc nvarchar(60)nvarchar(60) NOT_APPLICABLE — операция не применяется к deltastore.NOT_APPLICABLE - the operation does not apply to the deltastore. Или группы строк был сжат до обновления до SQL Server 2016 (13.x);SQL Server 2016 (13.x) , в этом случае журнал не сохраняется.Or, the rowgroup was compressed prior to upgrading to SQL Server 2016 (13.x);SQL Server 2016 (13.x) in which case the history is not preserved.

INDEX_BUILD — перестроение индекса или повторное создание индекса сжато группы строк.INDEX_BUILD - An index create or index rebuild compressed the rowgroup.

TUPLE_MOVER — задача перемещения кортежей, выполняемая в фоновом режиме, сжимает группы строк.TUPLE_MOVER - The tuple mover running in the background compressed the rowgroup. Перемещение кортежей происходит после того, как состояние группы строк изменится с OPEN на CLOSED.Tuple mover happens after the rowgroup changes state from OPEN to CLOSED.

REORG_NORMAL — операция реорганизации, ALTER INDEX... REORG, перемещен закрытый группы строк из deltastore в columnstore.REORG_NORMAL - The reorganization operation, ALTER INDEX ... REORG, moved the CLOSED rowgroup from the deltastore to the columnstore. Это произошло до того, как в процессе перемещения по кортежам пришло время на перемещение группы строк.This occurred before the tuple-mover had time to move the rowgroup.

REORG_FORCED — этот группы строк был открыт в deltastore и был принудительно передан в columnstore до того, как в нем было указано полное число строк.REORG_FORCED - This rowgroup was open in the deltastore and was forced into the columnstore before it had a full number of rows.

BULKLOAD — операция массовой загрузки сжимает группы строк напрямую без использования deltastore.BULKLOAD - A bulk-load operation compressed the rowgroup directly without using the deltastore.

MERGE — Операция Merge, объединяющая один или несколько групп строк в этот группы строк, а затем выполнила сжатие columnstore.MERGE - A merge operation consolidated one or more rowgroups into this rowgroup and then performed the columnstore compression.
has_vertipaq_optimizationhas_vertipaq_optimization bitbit Оптимизация VertiPaq улучшает сжатие columnstore путем изменения порядка строк в группы строк для достижения более высокого сжатия.VertiPaq optimization improves columnstore compression by rearranging the order of the rows in the rowgroup to achieve higher compression. В большинстве случаев такая оптимизация выполняется автоматически.This optimization occurs automatically in most cases. В двух случаях оптимизация VertiPaq не используется:There are two cases where VertiPaq optimization is not used:
a.a. Если Дельта-группы строк перемещается в columnstore и имеется один или несколько некластеризованных индексов в индексе columnstore, то оптимизация VertiPaq пропускается для сворачивания изменений в индексе сопоставления.when a delta rowgroup moves into the columnstore and there are one or more nonclustered indexes on the columnstore index - in this case VertiPaq optimization is skipped to minimizes changes to the mapping index;
b.b. для индексов columnstore в таблицах, оптимизированных для памяти.for columnstore indexes on memory-optimized tables.

0 = нет0 = No

1 = да1 = Yes
поколенияgeneration bigintbigint Создание группы строк, связанной с этой группой строк.Row group generation associated with this row group.
created_timecreated_time datetime2datetime2 Время создания группы строк.Clock time for when this rowgroup was created.

NULL — для индекса columnstore в таблице в памяти.NULL - for a columnstore index on an in-memory table.
 
closed_timeclosed_time datetime2datetime2 Время, когда группы строк был закрыт.Clock time for when this rowgroup was closed.

NULL — для индекса columnstore в таблице в памяти.NULL - for a columnstore index on an in-memory table.
 
     

РезультатыResults

Возвращает по одной строке для каждого группы строк в текущей базе данных.Returns one row for each rowgroup in the current database.

РазрешенияPermissions

Требуется CONTROL разрешение на таблицу и VIEW DATABASE STATE разрешение в базе данных.Requires CONTROL permission on the table and VIEW DATABASE STATE permission on the database.

ПримерыExamples

а.A. Вычислите фрагментацию, чтобы решить, когда следует реорганизовать или перестроить индекс columnstore.Calculate fragmentation to decide when to reorganize or rebuild a columnstore index.

Для индексов columnstore процент удаленных строк является хорошей мерой для фрагментации в группы строк.For columnstore indexes, the percent of deleted rows is a good measure for the fragmentation in a rowgroup. Если фрагментация составляет 20% или более, удалите удаленные строки.When the fragmentation is 20% or more, remove the deleted rows. Дополнительные примеры см. в разделе реорганизация и перестроение индексов.For more examples, see Reorganize and Rebuild Indexes.

В этом примере выполняется соединение sys. dm_db_column_store_row_group_physical_stats с другими системными таблицами, а Fragmentation затем столбец вычисляется как оценка эффективности каждой группы строк в текущей базе данных.This example joins sys.dm_db_column_store_row_group_physical_stats with other system tables and then calculates the Fragmentation column as an estimate of the efficiency of each row group in the current database. Чтобы найти сведения об одной таблице, удалите дефисы в комментариях перед предложением WHERE и укажите имя таблицы.To find information on a single table, remove the comment hyphens in front of the WHERE clause and provide a table name.

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;  

См. такжеSee Also

Представления каталога объектов ()Transact-SQL Object Catalog Views (Transact-SQL)
Представления каталога ()Transact-SQL Catalog Views (Transact-SQL)
Архитектура индекса columnstore Columnstore Index Architecture
Запросы к системному каталогу SQL Server вопросы и ответы Querying the SQL Server System Catalog FAQ
sys. Columns ()Transact-SQL sys.columns (Transact-SQL)
sys. all_columns (Transact-SQL) sys.all_columns (Transact-SQL)
sys. computed_columns (Transact-SQL)sys.computed_columns (Transact-SQL)
sys. column_store_dictionaries (Transact-SQL) sys.column_store_dictionaries (Transact-SQL)
sys. column_store_segments (Transact-SQL)sys.column_store_segments (Transact-SQL)