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


sys.column_store_row_groups (Transact-SQL)

Применимо к:SQL ServerAzure SQL База данныхAzure SQL Управляемый экземплярSQL База данных в Microsoft Fabric

Предоставляет сведения об индексе columnstore для каждого сегмента.

Для кластеризованных индексов sys.column_store_row_groups columnstore содержит столбец для общего количества строк, физически хранящихся (включая помеченные как удаленные) и столбец для числа строк, помеченных как удаленные. Используется sys.column_store_row_groups для определения того, какие группы строк имеют высокий процент удаленных строк и должны быть перестроены.

Имя столбца Тип данных Description
object_id int Идентификатор таблицы, в которой определен этот индекс.
index_id int Идентификатор индекса columnstore.
partition_number int Раздел таблицы, содержащий группу строк, определяемую по row_group_id. Используется partition_number для присоединения sys.partitions.
row_group_id int Номер группы строк, связанный с этой группой строк. Это число уникально в разделе.

-1 = хвост оптимизированной для памяти таблицы.
delta_store_hobt_id bigint OPEN Группа hobt_id строк в разностном хранилище.

ЗНАЧЕНИЕ NULL, если группа строк не хранится в разностном хранилище.

NULL для хвоста оптимизированной для памяти таблицы.
state tinyint Число, описывающее состояние группы строк.

0 = INVISIBLE

1 = OPEN

2 = CLOSED

3 = COMPRESSED

4 = TOMBSTONE
state_description nvarchar(60) Описание состояния группы строк:

INVISIBLE — скрытый сжатый сегмент в процессе построения из данных в разностном хранилище. Действия чтения используют разностное хранилище, пока невидимый сжатый сегмент не будет завершен. Когда новый сегмент станет видимым, исходное разностное хранилище будет удалено.

OPEN — группа строк чтения и записи, принимаюющая новые строки. Открытая группа строк по-прежнему находится в формате rowstore и не сжимается до формата columnstore.

CLOSED — группа строк, заполненная, но еще не сжимаемая процессом перемещения кортежа.

COMPRESSED — группа строк, заполненная и сжимаемая.
total_rows bigint Общее число строк, которые физически хранятся в группе строк. Удаленные строки по-прежнему могут храниться. Максимальное количество строк в группе строк — 1 048 576.
deleted_rows bigint Всего строк в группе строк, помеченных как удаленные, но сохраняемые. Это значение всегда 0 предназначено для групп разностных строк.

Для некластеризованных индексов columnstore это значение не включает удаленные строки, хранящиеся в буфере удаления. Дополнительные сведения и поиск количества удаленных строк в буфере удаления см. в sys.internal_partitions.
size_in_bytes bigint Размер в байтах всех данных в этой группе строк (не включая метаданные или общие словари), как для разностного хранилища, так и для групп строк columnstore.

Замечания

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

Используется sys.column_store_row_groups для определения количества строк в группе строк и размера группы строк.

Если количество удаленных строк в группе становится большим по отношению к общему числу строк, таблица становится менее эффективной. Перестройте индекс columnstore, чтобы сократить размер таблицы и уменьшить число дисковых операций ввода-вывода, необходимых для чтения таблицы. Чтобы перестроить индекс columnstore, используйте REBUILD предложение инструкции ALTER INDEX .

Обновляемое хранилище columnstore сначала вставляет новые данные в открытую группу строк, которая находится в формате rowstore, а также иногда называется разностной таблицей. После полного завершения открытой группы строк его состояние изменится CLOSEDна . Закрытая группа строк сжимается в формат columnstore путем перемещения кортежа и изменения COMPRESSEDсостояния. Процесс перемещения кортежей — это фоновый процесс, который периодически активируется и проверяет, существуют ли закрытые группы строк, готовые к сжатию в группу строк columnstore. Перемещение кортежа также освобождает все группы строк, в которых удаляется каждая строка. Освобожденные группы строк помечаются как TOMBSTONE. Чтобы немедленно запустить перемещение кортежей, используйте REORGANIZE предложение инструкции ALTER INDEX .

Когда группа строк columnstore заполняется, она сжимается и перестает принимать новые строки. При удалении строк из сжатой группы они остаются, но помечены как удаленные. Обновления сжатой группы реализуются как удаление из сжатой группы и вставка в открытую группу.

Разрешения

Возвращает сведения для таблицы, если у пользователя есть VIEW DEFINITION разрешение на таблицу.

Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе "Конфигурация видимости метаданных".

Примеры

В следующем примере выполняется присоединение sys.column_store_row_groups представления и других системных представлений к возврату сведений о кластеризованных индексах columnstore. Столбец percent_full представляет собой оценку эффективности группы строк.

SELECT i.object_id,
       OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
       OBJECT_NAME(i.object_id) AS table_name,
       i.name AS index_name,
       i.type_desc AS index_type_desc,
       rg.partition_number,
       rg.row_group_id,
       rg.state_description,
       rg.total_rows,
       rg.deleted_rows,
       rg.size_in_bytes,
       100 * (rg.total_rows - ISNULL(rg.deleted_rows, 0)) / total_rows AS percent_full
FROM sys.indexes AS i
     INNER JOIN sys.column_store_row_groups AS rg
         ON i.object_id = rg.object_id
        AND i.index_id = rg.index_id
WHERE INDEXPROPERTY(i.object_id, i.name, 'IsClustered') = 1
ORDER BY schema_name, table_name, index_name, row_group_id;

Дополнительные сведения см. в разделе " Проверка фрагментации индекса columnstore".