sys.column_store_segments (Transact-SQL)
Aplica-se a: SQL Server 2012 (11.x) e posterior Instância Gerenciada SQL do Azure
Retorna uma linha para cada segmento de coluna em um índice columnstore. Há um segmento de coluna por coluna por grupo de linhas. Por exemplo, uma tabela com 10 grupos de linhas e 34 colunas retorna 340 linhas.
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
partition_id | bigint | Indica a ID da partição. É exclusivo em um banco de dados. |
hobt_id | bigint | ID do heap ou índice de árvore B (HoBT) para a tabela que tem esse índice columnstore. |
column_id | int | ID da coluna columnstore. |
segment_id | int | ID do grupo de linhas. Para compatibilidade com versões anteriores, o nome da coluna continua a ser chamado segment_id mesmo que essa seja a ID do grupo de linhas. Você pode identificar exclusivamente um segmento usando <hobt_id, partition_id, column_id>< segment_id>. |
version | int | Versão de formato do segmento de coluna. |
encoding_type | int | Tipo de codificação utilizada para esse segmento: 1 = VALUE_BASED - não-string/binário sem dicionário (semelhante a 4 com algumas variações internas) 2 = VALUE_HASH_BASED - coluna não-string/binária com valores comuns no dicionário 3 = STRING_HASH_BASED - string/coluna binária com valores comuns no dicionário 4 = STORE_BY_VALUE_BASED - não-string/binário sem dicionário 5 = STRING_STORE_BY_VALUE_BASED - string/binário sem dicionário Para obter mais informações, consulte a seção Comentários. |
row_count | int | Número de linhas no grupo de linhas. |
has_nulls | int | 1 se o segmento de coluna tiver valores nulos. |
base_id | bigint | ID do valor base se o tipo de codificação 1 estiver sendo usado. Se a codificação do tipo 1 não estiver sendo usada, base_id será definida como -1. |
magnitude | float | Magnitude se a codificação do tipo 1 estiver sendo usada. Se o tipo de codificação 1 não estiver sendo usado, a magnitude será definida como -1. |
primary_dictionary_id | int | Um valor 0 representa o dicionário global. Um valor de -1 indica que não há nenhum dicionário global criado para esta coluna. |
secondary_dictionary_id | int | Um valor diferente de zero aponta para o dicionário local dessa coluna no segmento atual (por exemplo, o grupo de linhas). Um valor de -1 indica que não há dicionário local para esse segmento. |
min_data_id | bigint | ID de dados mínimo no segmento de coluna. |
max_data_id | bigint | ID de dados máximo no segmento de coluna. |
null_value | bigint | Valor usado para representar nulos. |
on_disk_size | bigint | Tamanho do segmento em bytes. |
collation_id | int | Aplica-se ao SQL Server 2022 (16.x) e posterior. Agrupamento atual quando o segmento foi criado. Mapeia para uma ID interna. Atualmente apenas interno e não para desenvolvimento. |
min_deep_data | Varbinário(18) | Aplica-se ao SQL Server 2022 (16.x) e posterior. Utilizado para eliminação de segmentos. 1 Apenas para uso interno. |
max_deep_data | Varbinário(18) | Aplica-se ao SQL Server 2022 (16.x) e posterior. Utilizado para eliminação de segmentos. 1 Apenas para uso interno. |
1 Depois de atualizar para uma versão do SQL Server que ofereça suporte à eliminação de segmento min/max de cadeia de caracteres (SQL Server 2022 (16.x) e posterior), min_deep_data
e max_deep_data
será NULL
até depois que o índice columnstore for recriado, usando um REBUILD ou DROP/CREATE. Após uma reconstrução, os segmentos que contêm tipos de dados que podem se beneficiar da eliminação do segmento min/max da cadeia de caracteres conterão dados.
Comentários
O tipo de codificação de segmento columnstore é selecionado pelo Mecanismo de Banco de Dados com o objetivo de obter o menor custo de armazenamento, analisando os dados do segmento. Se os dados forem principalmente distintos, o Mecanismo de Banco de Dados usará codificação baseada em valor. Se os dados não forem mais distintos, o Mecanismo de Banco de Dados usará codificação baseada em hash. A escolha entre codificação baseada em cadeia de caracteres e baseada em valor está relacionada ao tipo de dados que estão sendo armazenados, sejam dados de cadeia de caracteres ou dados binários. Todas as codificações aproveitam o empacotamento de bits e a codificação de comprimento de execução quando possível.
A eliminação do segmento columnstore aplica-se aos tipos de dados numéricos, de data e hora e ao tipo de dados datetimeoffset com escala menor ou igual a dois. Do SQL Server 2022 (16.x) em diante, os recursos de eliminação de segmento se estendem a tipos de dados de cadeia de caracteres, binários, GUID e o tipo de dados datetimeoffset para escala maior que dois. A eliminação de segmento não se aplica a tipos de dados LOB, como os comprimentos de tipo de dados (máximo).
Permissões
Todas as colunas exigem pelo menos VIEW DEFINITION
permissão na tabela. As colunas a seguir retornam NULL
, a menos que o usuário também tenha SELECT
permissão: has_nulls
, base_id
, magnitude
, min_data_id
, max_data_id
e null_value
.
A visibilidade dos metadados em exibições de catálogo é limitada a protegíveis que um usuário possui ou nos quais o usuário recebeu alguma permissão. Para obter mais informações, consulte Metadata Visibility Configuration.
Exemplos
A consulta a seguir retorna informações sobre segmentos de um índice 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 ;
GO
Próximas etapas
- Exibições do catálogo de objeto (Transact-SQL)
- Exibições do Catálogo (Transact-SQL)
- Consultando as perguntas frequentes do catálogo do sistema do SQL Server
- sys.columns (Transact-SQL)
- sys.all_columns (Transact-SQL)
- sys.computed_columns (Transact-SQL)
- Guia de Índices columnstore
- sys.column_store_dictionaries (Transact-SQL)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de