Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2012 (11.x) e versões
posteriores Azure SQL Managed Instance
Devolve uma linha para cada segmento de coluna num índice columnstore. Existe um segmento de coluna por coluna por grupo de linhas. Por exemplo, uma tabela com 10 grupos de linhas e 34 colunas devolve 340 linhas.
| Nome da coluna | Tipo de dados | Description |
|---|---|---|
| partition_id | bigint | Indica o ID da partição. É exclusivo dentro de um banco de dados. |
| hobt_id | bigint | ID do heap ou índice da árvore B (HoBT) para a tabela que tem este índice de stock. |
| column_id | int | ID da coluna columnstore. |
| segment_id | int | ID do grupo de linhas. Para compatibilidade retroativa, o nome da coluna continua a ser chamado segment_id mesmo sendo o ID do grupo de linhas. Pode identificar um segmento de forma única usando <hobt_id, partition_id, column_id>, <segment_id>. |
| Versão | int | Versão do formato de segmento de coluna. |
| encoding_type | int | Tipo de codificação usada para esse segmento: 1 = VALUE_BASED - não-string/binário sem dicionário (semelhante ao 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 |
| row_count | int | Número de filas no grupo de filas. |
| has_nulls | int | 1 se o segmento da coluna tiver valores nulos. |
| base_id | bigint | ID de valor base se estiver a ser usado o tipo de codificação 1. Se não estiver a ser usado o tipo de codificação 1, base_id é definido para -1. |
| Magnitude | float | Magnitude se estiver a ser usada a codificação tipo 1. Se a codificação tipo 1 não for utilizada, a magnitude é definida para -1. |
| primary_dictionary_id | int | Um valor de 0 representa o dicionário global. Um valor de -1 indica que não existe um dicionário global criado para esta coluna. |
| secondary_dictionary_id | int | Um valor não nulo aponta para o dicionário local desta coluna no segmento atual (por exemplo, o grupo de linhas). Um valor de -1 indica que não existe dicionário local para este segmento. |
| min_data_id | bigint | ID mínimo de dados no segmento da coluna. |
| max_data_id | bigint | ID máximo de dados no segmento da 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 posteriores. A classificação atual quando o segmento foi criado. Corresponde a um ID interno. Atualmente apenas interna e não para desenvolvimento. |
| min_deep_data | Varbinary(18) |
Aplica-se ao SQL Server 2022 (16.x) e posteriores. Usado para eliminação de segmentos. 1 Para uso interno apenas. |
| max_deep_data | Varbinary(18) |
Aplica-se ao SQL Server 2022 (16.x) e posteriores. Usado para eliminação de segmentos. 1 Para uso interno apenas. |
1 Após atualizar para uma versão do SQL Server que suporta a eliminação de segmentos mínimos/máximos de cadeias (SQL Server 2022 (16.x) e posteriores), min_deep_data e max_deep_data que permanecerá NULL até depois de o índice da columnstore ser reconstruído, usando um REBUILD ou DROP/CREATE. Após uma reconstrução, os segmentos que contêm tipos de dados que podem beneficiar da eliminação min/max de segmentos de string conterão dados.
Observações
O tipo de codificação de segmento columnstore é selecionado pelo Motor de Base de Dados com o objetivo de obter o menor custo de armazenamento, analisando os dados do segmento. Se os dados forem maioritariamente distintos, o Motor de Base de Dados utiliza codificação baseada em valores. Se os dados não forem maioritariamente distintos, o Motor de Base de Dados utiliza codificação baseada em hash. A escolha entre codificação baseada em strings e baseada em valores está relacionada com o tipo de dados armazenados, sejam dados string ou binários. Todas as codificações aproveitam o bit-packing e a codificação por comprimento de execução sempre que possível.
A eliminação de segmentos de Column Store aplica-se a tipos de dados numéricos, de data e hora, e ao tipo de dado datetimeoffset com escala menor ou igual a dois. A partir do SQL Server 2022 (16.x), os recursos de eliminação de segmento se estendem aos tipos de dados string, binário, guid e datetimeoffset para escala maior que dois. A eliminação de segmentos não se aplica a tipos de dados LOB, como os comprimentos máximos dos tipos de dados.
Permissions
Todas as colunas requerem pelo menos VIEW DEFINITION permissão na tabela. As colunas seguintes retornam NULL , a menos que o utilizador também tenha SELECT permissão: has_nulls, base_id, magnitude, min_data_id, max_data_id, e null_value.
A visibilidade dos metadados nas visualizações de catálogo é limitada aos itens de segurança que um utilizador possui ou nos quais o utilizador recebeu alguma permissão. Para obter mais informações, consulte Configuração de visibilidade de metadados.
Examples
A consulta seguinte devolve informações sobre segmentos de um índice de column store.
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óximos passos
- Exibições do catálogo de objetos (Transact-SQL)
- Visualizações do catálogo (Transact-SQL)
- Consultando o catálogo do sistema do SQL Server
- sys.columns (Transact-SQL)
- sys.all_columns (Transact-SQL)
- sys.computed_columns (Transact-SQL)
- Guia de Índices de Columnstore
- sys.column_store_dictionaries (Transact-SQL)