Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
Возвращает одну строку для каждого сегмента столбца в индексе columnstore. Существует один сегмент столбца для каждого столбца для каждой группы строк. Например, индекс columnstore с 10 группами строк и 34 столбцами содержит 340 строк в этом представлении.
| Имя столбца | Тип данных | Description |
|---|---|---|
partition_id |
bigint | Указывает идентификатор секции. Уникален в базе данных. |
hobt_id |
bigint | Идентификатор кучи или индекса дерева B (HoBT) для таблицы с этим индексом columnstore. |
column_id |
int | Идентификатор столбца columnstore. |
segment_id |
int | Идентификатор группы строк. Для обратной совместимости имя столбца продолжает вызываться segment_id даже если это идентификатор группы строк. Вы можете однозначно определить сегмент с помощью <hobt_id, partition_id, column_id, segment_id>. |
version |
int | Версия формата сегмента столбца. |
encoding_type |
int | Тип кодировки, используемой для этого сегмента: 1 = VALUE_BASED - нестрочная или двоичная без словаря (аналогично 4 с некоторыми внутренними вариациями) 2 = VALUE_HASH_BASED — нестрочного или двоичного столбца с общими значениями в словаре 3 = STRING_HASH_BASED — строковый или двоичный столбец с общими значениями в словаре 4 = STORE_BY_VALUE_BASED — нестрочная или двоичная без словаря 5 = STRING_STORE_BY_VALUE_BASED — строка или двоичный файл без словаря Дополнительные сведения см. в разделе с примечаниями. |
row_count |
int | Число строк в группе строк. |
has_nulls |
int | 1, если в сегменте столбца есть NULLs. |
base_id |
bigint | Базовый идентификатор значения, если используется тип 1 кодирования. Если тип кодирования 1 не используется, base_id установите значение -1. |
magnitude |
float | Величина, если используется тип 1 кодировки. Если тип кодирования 1 не используется, magnitude установите значение -1. |
primary_dictionary_id |
int | Значение 0 представляет глобальный словарь. Значение -1 указывает, что для этого столбца нет глобального словаря. |
secondary_dictionary_id |
int | Значение, отличное от нуля, указывает на локальный словарь для этого столбца в текущем сегменте (например, группу строк). Значение -1 указывает, что для этого сегмента отсутствует локальный словарь. |
min_data_id |
bigint | Только для внутреннего использования. |
max_data_id |
bigint | Только для внутреннего использования. |
null_value |
bigint | Значение, используемое для представления значений NULL. |
on_disk_size |
bigint | Размер сегмента в байтах. |
collation_id |
int | Текущая сортировка при создании сегмента. Сопоставляется с внутренним идентификатором. Только для внутреннего использования. применимо к: SQL Server 2022 (16.x) и более поздним версиям, Базе данных SQL Azure и Управляемому экземпляру SQL Azure |
min_deep_data |
varbinary(18) | Используется для устранения сегментов.1 Только для внутреннего использования. применимо к: SQL Server 2022 (16.x) и более поздним версиям, Базе данных SQL Azure и Управляемому экземпляру SQL Azure |
max_deep_data |
varbinary(18) | Используется для устранения сегментов.1 Только для внутреннего использования. применимо к: SQL Server 2022 (16.x) и более поздним версиям, Базе данных SQL Azure и Управляемому экземпляру SQL Azure |
1 После обновления до версии ядра СУБД, поддерживающей исключение сегмента min/max для расширенного набора типов данных (представленных в SQL Server 2022 (16.x)), min_deep_data и max_deep_data до NULL тех пор, пока индекс columnstore не будет перестроен с помощью ALTER INDEX ... REBUILD инструкции или CREATE INDEX ... WITH (DROP_EXISTING = ON) инструкции.
Замечания
Тип кодирования сегментов columnstore выбирается ядром СУБД, анализируя данные сегмента с целью достижения наименьшей стоимости хранилища. Если данные в основном отличаются, ядро СУБД использует кодировку на основе значений. Если данные в основном не отличаются, ядро СУБД использует хэш-кодировку. Выбор между кодировкой на основе строк и кодировкой на основе значений связан с типом хранимых данных, будь то строковые данные или двоичные данные. Все кодировки по возможности используют кодировку битовой упаковки и длины выполнения.
Исключение сегмента Columnstore применяется к числовым, датовым и временным типам данных, а также к типу данных datetimeoffset с масштабом меньше или равно двум. Начиная с SQL Server 2022 (16.x), возможности устранения сегментов расширяются до строковых и двоичных типов данных, уникального типа данных и типа данных datetimeoffset для масштабирования больше двух. Исключение сегментов не применяется к типам данных LOB, таким как varchar(max), nvarchar(max), и varbinary(max). Дополнительные сведения см. в статье "Новые возможности индексов columnstore".
Разрешения
Требуется VIEW DEFINITION разрешение на представление. Следующие столбцы возвращаютсяNULL, если пользователь также не имеет SELECT разрешения: has_nulls, base_id, , magnitude, max_data_idmin_data_idи null_value.
Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Примеры
Следующий запрос возвращает сведения о сегментах индекса columnstore.
SELECT i.name, p.object_id, p.index_id, i.type_desc,
COUNT(*) AS number_of_segments
FROM sys.column_store_segments AS s
INNER JOIN sys.partitions AS p
ON s.hobt_id = p.hobt_id
INNER JOIN sys.indexes AS i
ON p.object_id = i.object_id
WHERE i.type = 5 OR i.type = 6
GROUP BY i.name, p.object_id, p.index_id, i.type_desc;
Связанный контент
- Руководство по индексам columnstore
- Настройка производительности с упорядоченными индексами columnstore
- Представления каталога объектов (Transact-SQL)
- Представления каталога (Transact-SQL)
- Часто задаваемые вопросы о запросах к системному каталогу SQL Server
- sys.columns (Transact-SQL)
- sys.all_columns (Transact-SQL)
- sys.computed_columns (Transact-SQL)
- sys.column_store_dictionaries (Transact-SQL)