sys.column_store_row_groups (Transact-SQL)
Область применения: SQL Server 2012 (11.x) и более поздних версий Управляемый экземпляр SQL Azure
Предоставляет сведения о кластеризованных индексах columnstore по отдельным сегментам, что позволяет администратору принимать решения о сопровождении системы. sys.column_store_row_groups содержит столбец для общего количества строк, физически хранящихся (включая помеченные как удаленные) и столбец для числа строк, помеченных как удаленные. Используйте 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 | Hobt_id для группы строк OPEN в разностном хранилище. ЗНАЧЕНИЕ NULL, если группа строк не находится в разностном хранилище. ЗНАЧЕНИЕ NULL для хвоста таблицы в памяти. |
state | tinyint | Идентификатор, связанный с параметром state_description. 0 = INVISIBLE 1 = OPEN; 2 = CLOSED 3 = СЖАТЫЕ 4 = TOMBSTONE |
state_description | nvarchar(60) | Описание сохраняемого состояния группы строк: НЕВИДИМЫй — скрытый сжатый сегмент в процессе построения из данных в разностном хранилище. Операции чтения будут использовать разностное хранилище до момента построения скрытого сжатого сегмента. Когда новый сегмент станет видимым, исходное разностное хранилище будет удалено. OPEN — группа строк чтения и записи, принимаюющая новые записи. Открытая группа строк остается в формате rowstore и не сжимается в формат columnstore. CLOSED — группа строк, заполненная, но еще не сжимаемая процессом перемещения кортежа. COMPRESSED — группа строк, заполненная и сжатая. |
total_rows | bigint | Общее число строк, которые физически хранятся в группе строк. Некоторые из строк могли быть удалены, но хранятся и дальше. Максимальное количество строк в группе — 1 048 576 (FFFFF в шестнадцатеричном формате). |
deleted_rows | bigint | Общее число строк в группе строк, которые отмечены как удаленные. Это значение всегда равно 0 для групп строк DELTA. |
size_in_bytes | bigint | Размер в байтах всех данных в этой группе строк (не включая метаданные или общие словари), как для групп строк DELTA и 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
разрешение на таблицу.
Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Примеры
В следующем примере таблица sys.column_store_row_groups присоединяется к другим системным таблицам для возврата сведений о определенных таблицах. Вычисляемый столбец PercentFull
— это оценка эффективности группы строк. Чтобы найти сведения о одной таблице, удалите дефисы комментариев перед предложением WHERE и укажите имя таблицы.
SELECT i.object_id, object_name(i.object_id) AS TableName,
i.name AS IndexName, i.index_id, i.type_desc,
CSRowGroups.*,
100*(total_rows - ISNULL(deleted_rows,0))/total_rows AS PercentFull
FROM sys.indexes AS i
JOIN sys.column_store_row_groups 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)
Часто задаваемые вопросы о запросах к системному каталогу SQL Server
sys.columns (Transact-SQL)
sys.all_columns (Transact-SQL)
sys.computed_columns (Transact-SQL)
Руководство по индексам columnstore
sys.column_store_dictionaries (Transact-SQL)
sys.column_store_segments (Transact-SQL)