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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
Saiba quais as funcionalidades da loja de colunas disponíveis em plataformas SQL e versões do SQL Server.
Resumo de funcionalidades para lançamentos de produtos
Esta tabela resume as principais características dos índices columnstore e os produtos em que estão disponíveis.
Para a disponibilidade de funcionalidades no Azure SQL Managed Instance com uma política de atualização do SQL Server, consulte a coluna da versão correspondente do SQL Server.
| Recurso de índices Columnstore | SQL Server 2016 (13.x)1 | SQL Server 2017 (14.x) | SQL Server 2019 (15.x) | SQL Server 2022 (16.x) | SQL Server 2025 (17.x) | Banco de Dados SQL do Azure2 e Instância Gerenciada SQL do AzureAUTD | Azure Synapse Analytics and Warehouse in Microsoft Fabric |
|---|---|---|---|---|---|---|---|
| Execução em modo batch para consultas multi-threaded3 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Execução em modo batch para consultas de thread único | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Opção de compressão de arquivo | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Isolamento de snapshot e isolamento de snapshot com leitura confirmada | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Especifique o índice columnstore ao criar uma tabela | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| O Always On suporta índices de armazenamento em colunas | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| O Always On secundário legível suporta um índice columnstore não clusterizado de leitura apenas. | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| O secundário legível do Always On suporta índices columnstore atualizáveis | Yes | Yes | Yes | Yes | Yes | Não | Não |
| Índice columnstore não clusterizado só de leitura em heap ou árvore B | Sim4 | Sim4 | Sim4 | Sim4 | Sim4 | Sim4 | Sim4 |
| Índice de armazenamento por coluna não agrupado e atualizável em heap ou árvore B | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Índices adicionais de árvore B permitidos em uma pilha ou árvore B que tenha um índice columnstore não clusterizado | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Índice clusterizado e atualizável de columnstore | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Índice de árvore B num índice columnstore clusterizado | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Índice de armazenamento por colunas em uma tabela otimizada para memória | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| A definição do índice columnstore não clusterizado suporta a utilização de uma condição filtrada | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Opção de atraso de compressão para índices columnstore em CREATE TABLE e ALTER TABLE |
Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Suporte para o tipo nvarchar(max) | Não | Yes | Yes | Yes | Yes | Yes | Nº5 |
| O índice Columnstore pode ter uma coluna computada não persistente | Não | Yes | Yes | Yes | Yes | Não | Não |
| Suporte para mesclagem em segundo plano do movimentador de tuplas | Não | Não | Yes | Yes | Yes | Yes | Yes |
| Índices columnstore agrupados ordenados | Não | Não | Não | Yes | Yes | Yes | Yes |
| Índices columnstore não clusterizados ordenados | Não | Não | Não | Não | Yes | Yes | Não |
| Criação e reconstrução do índice columnstore online | Não | Não | Não | Yes | Yes | Yes | Não |
| Criar e reconstruir o índice columnstore ordenado online | Não | Não | Não | Não | Yes | Yes | Não |
1 Para o SQL Server 2016 (13.x) SP1 e versões posteriores, os índices columnstore estão disponíveis em todas as edições. Para o SQL Server 2016 (13.x) (antes do SP1) e versões anteriores, os índices columnstore só estão disponíveis na Enterprise Edition. 2 Para o Banco de Dados SQL do Azure, os índices columnstore estão disponíveis nas camadas DTU Premium, DTU Standard - S3 e superior e todas as camadas vCore. 3 O grau de paralelismo (DOP) para operações de em modo de lote é limitado a 2 para SQL Server Standard Edition e 1 para SQL Server Web e Express Editions. Essa limitação refere-se a índices columnstore criados em tabelas baseadas em disco e tabelas com otimização de memória. 4 Para criar um índice columnstore não clusterizado de leitura exclusiva, armazene o índice em um grupo de arquivos de leitura exclusiva. 5 Não há suporte em pools SQL dedicados, mas é suportado em pool SQL sem servidor.
SQL Server 2025 (17.x)
O SQL Server 2025 (17.x) adicionou estas funcionalidades:
O columnstore ordenado não clusterizado melhora o desempenho das consultas em análises operacionais em tempo real.
Para obter mais informações, consulte Otimização de desempenho com índices columnstore ordenados.
Um índice columnstore ordenado (agrupado ou não clusterizado) agora pode ser criado ou reconstruído online.
Você pode especificar
ONLINE = ONna instrução CREATE INDEX quando aORDERcláusula está presente. Para obter mais informações sobre operações de índice online, consulte Executar operações de índice online.Qualidade de classificação aprimorada para índices columnstore agrupados ordenados.
No SQL Server 2025 (17.x), quando um índice columnstore clusterizado ordenado é criado online, o algoritmo de ordenação utiliza
tempdbem vez de ordenar os dados na memória. SeMAXDOPfor igual a 1 para a compilação de índice, a compilação produzirá um índice columnstore clusterizado totalmente ordenado, sem segmentos sobrepostos. Isso pode melhorar o desempenho das consultas usando o índice. No entanto, a construção do índice pode levar mais tempo devido à E/S adicional necessária para que os vazamentos cheguem aotempdb. Se já existir um índice columnstore clusterizado, as consultas podem continuar a usá-lo enquanto a reconstrução do índice online totalmente ordenada estiver em andamento.Para mais informações, consulte Reduzir sobreposição de segmentos.
Operações melhoradas de redução de bases de dados e ficheiros.
Em versões anteriores do SQL Server, quando um índice columnstore clusterizado inclui colunas com tipos de dados LOB, como varchar(max), nvarchar(max), varbinary(max), as páginas de dados usadas por essas colunas não podem ser movidas pelas operações de redução. Como resultado, o shrink pode ser menos eficaz na recuperação de espaço nos arquivos de dados.
No SQL Server 2025 (17.x), ambos os comandos
DBCC SHRINKDATABASEeDBCC SHRINKFILEpodem mover páginas de dados usadas pelas colunas LOB nos índices columnstore.
SQL Server 2022 (16.x)
O SQL Server 2022 (16.x) adicionou estes recursos:
- Os índices columnstore agrupados ordenados melhoram o desempenho de consultas com base em predicados de coluna ordenados. Os índices columnstore ordenados podem melhorar o desempenho ignorando segmentos de dados por completo. Isso pode reduzir drasticamente a E/S necessária para concluir consultas em dados de columnstore. Para mais informações, consulte a eliminação do segmento. Para obter mais informações, consulte CREATE COLUMNSTORE INDEX e Ajuste de desempenho com índices columnstore ordenados.
- A eliminação de grupos de linhas de um columnstore clusterizado para strings usando pushdown de predicado utiliza valores limítrofes para otimizar pesquisas de cadeias de caracteres. Todos os índices columnstore se beneficiam da eliminação aprimorada de segmentos por tipo de dados. A partir do SQL Server 2022 (16.x), estas capacidades de eliminação de segmento se estendem aos tipos de dados string, binário e GUID, e ao tipo de dados datetimeoffset para escalas superiores a dois. Anteriormente, a eliminação de segmentos columnstore aplicava-se apenas aos tipos de dados numéricos, de data e hora, e ao tipo de dados datetimeoffset com escala menor ou igual a dois. Depois de atualizar para uma versão do SQL Server que suporta eliminação de segmentos min/max de strings (SQL Server 2022 (16.x) e versões posteriores), o índice columnstore não tira proveito desta funcionalidade até ser reconstruído usando
ALTER INDEX REBUILDouCREATE INDEX WITH (DROP_EXISTING = ON). - Eliminação de grupos de linhas Columnstore para o prefixo de predicados
LIKE, como, por exemplo, ocolumn LIKE 'string%'. A eliminação de segmentos não é suportada para a utilização deLIKEsem prefixo, tal comocolumn LIKE '%string'. - Para obter mais informações sobre recursos adicionados, consulte Novidades no SQL Server 2022.
SQL Server 2019 (15.x)
O SQL Server 2019 (15.x) adiciona estes novos recursos:
Functional
A partir do SQL Server 2019 (15.x), o mover de tuplas é ajudado por uma tarefa de fusão em segundo plano que comprime automaticamente grupos de linhas delta abertos menores que existem há algum tempo, conforme determinado por um limiar interno, ou funde grupos de linhas comprimidos de onde um grande número de linhas foi eliminado. Anteriormente, uma operação de reorganização de índice era necessária para mesclar grupos de linhas com dados parcialmente excluídos. Isso melhora a qualidade do índice columnstore ao longo do tempo.
SQL Server 2017 (14.x)
O SQL Server 2017 (14.x) adiciona esses novos recursos.
Functional
- O SQL Server 2017 (14.x) oferece suporte a colunas computadas não persistentes em índices columnstore clusterizados. Índices de columnstore clusterizados não suportam colunas computadas persistentes. Não é possível criar um índice de coluna não agrupado numa coluna computada.
SQL Server 2016 (13.x)
O SQL Server 2016 (13.x) adiciona aprimoramentos importantes para melhorar o desempenho e a flexibilidade dos índices columnstore. Essas melhorias aprimoram os cenários de armazenamento de dados e permitem análises operacionais em tempo real.
Functional
Uma tabela rowstore pode ter um índice columnstore não clusterizado que seja atualizável. Anteriormente, o índice columnstore não clusterizado era de apenas leitura.
A definição do índice de armazenamento em coluna não clusterizado oferece suporte ao uso de uma condição filtrada. Para minimizar o impacto no desempenho da adição de um índice columnstore em uma tabela OLTP, use uma condição filtrada para criar um índice columnstore não clusterizado somente nos dados frios de sua carga de trabalho operacional.
Uma tabela na memória pode ter um índice de columnstore. Você pode criá-la quando a tabela for criada ou adicioná-la posteriormente com ALTER TABLE. Anteriormente, apenas uma tabela baseada em disco podia ter um índice colunar.
Um índice columnstore clusterizado pode ter um ou mais índices rowstore não clusterizados. Anteriormente, o índice de columnstore não suportava índices não agrupados. O SQL Server mantém automaticamente os índices não clusterizados para operações DML.
Suporte para chaves primárias e chaves estrangeiras utilizando um índice B-tree para aplicar estas restrições num índice columnstore clusterizado.
Os índices Columnstore têm uma opção de adiamento da compressão que minimiza o impacto da carga de trabalho transacional na análise operacional em tempo real. Essa opção permite alterar frequentemente as linhas para estabilizar antes de compactá-las no columnstore. Para mais detalhes, consulte CRIAR ÍNDICE COLUMNSTORE e Comece com os índices columnstore para análises operacionais em tempo real.
Desempenho para o nível de compatibilidade de banco de dados 120 ou 130
Os índices Columnstore suportam o nível de isolamento de instantâneo confirmado (Read Committed Snapshot Isolation Level, RCSI) e o isolamento de instantâneo (Snapshot Isolation, SI). Isso permite consultas de análise transacionais consistentes sem bloqueios.
Columnstore suporta desfragmentação de índice removendo linhas excluídas sem a necessidade de reconstruir explicitamente o índice. A instrução
ALTER INDEX ... REORGANIZEremove linhas eliminadas, com base numa política definida internamente, do columnstore numa operação onlineOs índices Columnstore podem ser acessíveis numa réplica secundária legível de Always On. Você pode melhorar o desempenho da análise operacional transferindo consultas de análise para uma réplica secundária Always On.
O Aggregate Pushdown calcula as funções agregadas
MIN,MAX,SUM,COUNT, eAVGdurante escanamentos de tabela quando o tipo de dado utiliza no máximo 8 bytes e não é um tipo de dados de texto. O suporte a "pushdown" agregado é fornecido com ou sem a cláusulaGROUP BYtanto para índices columnstore agrupados como para índices columnstore não agrupados. No SQL Server, esse aprimoramento é reservado para a edição Enterprise.O pushdown de predicados de cadeias acelera consultas que comparam cadeias do tipo varchar/char ou nvarchar/nchar. Isso se aplica aos operadores de comparação comuns e inclui operadores como
LIKEque usam filtros de bitmap. Isso funciona com todas as classificações suportadas. No SQL Server, esse aprimoramento é reservado para a edição Enterprise.Aprimoramentos para operações em modo de lote aproveitando os recursos de hardware baseados em vetor. O Mecanismo de Banco de Dados deteta o nível de suporte da CPU para as extensões de hardware AVX 2 (Advanced Vetor Extensions) e SSE 4 (Streaming SIMD Extensions 4) e as usa, se suportadas. No SQL Server, esse aprimoramento é reservado para a edição Enterprise.
Desempenho para o nível de compatibilidade de banco de dados 130
Novo suporte de execução em modo batch para consultas usando qualquer uma destas operações:
SORT- Agregados com múltiplas funções distintas. Alguns exemplos:
COUNT/COUNT,AVG/SUM,CHECKSUM_AGG,STDEV/STDEVP - Funções de agregação de janelas:
COUNT,COUNT_BIG,SUM,AVG,MIN,MAXeCLR - Agregações definidas pelo usuário da janela:
CHECKSUM_AGG,STDEV,STDEVP,VAR,VARPeGROUPING - Funções analíticas de agregado de janelas:
LAG,LEAD,FIRST_VALUE,LAST_VALUE,PERCENTILE_CONT,PERCENTILE_DISC,CUME_DIST, ePERCENT_RANK
Consultas de thread único executadas sob
MAXDOP 1ou com um plano de consulta serial são executadas em modo de lote. Anteriormente, apenas consultas multiencadeadas eram executadas com execução em lote.As consultas em tabelas otimizadas para memória podem ter planos paralelos no modo SQL InterOp, tanto ao aceder a dados em rowstore quanto num índice columnstore.
Supportability
Estas visualizações do sistema são novas para columnstore:
- sys.column_store_row_groups
- sys.dm_column_store_object_pool
- sys.dm_db_column_store_row_group_operational_stats
- sys.dm_db_column_store_row_group_physical_stats
- sys.dm_db_index_operational_stats
- sys.dm_db_index_physical_stats
- sys.internal_partitions
Esses DMVs baseados em OLTP na memória contêm atualizações para columnstore:
- sys.dm_db_xtp_hash_index_stats
- sys.dm_db_xtp_index_stats
- sys.dm_db_xtp_memory_consumers
- sys.dm_db_xtp_nonclustered_index_stats
- sys.dm_db_xtp_object_stats
- sys.dm_db_xtp_table_memory_stats
Limitations
- Para tabelas em memória, um índice columnstore deve incluir todas as colunas; O Column Store Index não pode ter uma condição filtrada.
- Para tabelas na memória, as consultas em índices columnstore são executadas somente no modo de interoperabilidade e não no modo de compilação nativo. A execução paralela é suportada.
Problemas conhecidos
Aplica-se a: SQL Server 2022 (16.x) e versões anteriores, Azure SQL ManagedInstance 2022
- As páginas de dados usadas por colunas LOB (varbinary(max), varchar(max) e nvarchar(max)) em segmentos columnstore compactados não podem ser movidas por
DBCC SHRINKDATABASEeDBCC SHRINKFILE. Este problema está resolvido no SQL Server 2025 (17.x).
SQL Server 2014 (12.x)
O SQL Server 2014 (12.x) introduziu o índice columnstore clusterizado como o formato de armazenamento primário. Isso permitia carregamentos regulares, bem como operações de atualização, exclusão e inserção.
- A tabela pode usar um índice columnstore clusterizado como armazenamento principal da tabela. Nenhum outro índice é permitido na tabela, mas o índice columnstore clusterizado é atualizável para que você possa executar carregamentos regulares e fazer alterações em linhas individuais.
- O índice columnstore não clusterizado continua a ter a mesma funcionalidade do SQL Server 2012 (11.x), exceto para operadores adicionais que agora podem ser executados no modo de lote. Ainda não é atualizável, exceto pela reconstrução e usando a troca de partições. O índice columnstore não clusterizado é suportado apenas em tabelas baseadas em disco e não em tabelas na memória.
- O índice columnstore clusterizado e não clusterizado tem uma opção de compressão arquivística que compacta ainda mais os dados. A opção de arquivamento é útil para reduzir o tamanho dos dados na memória e no disco, mas diminui o desempenho da consulta. Ele funciona bem para dados que são acessados com pouca frequência.
- O índice columnstore clusterizado e o índice columnstore não clusterizado funcionam de forma muito semelhante, ambos os índices usam o mesmo formato de armazenamento colunar, o mesmo mecanismo de processamento de consultas e o mesmo conjunto de vistas de gerenciamento dinâmico. A diferença está nos tipos de índices primário e secundário, e o índice columnstore não clusterizado é de leitura apenas.
- Esses operadores são executados em modo de lote para consultas multithreaded: análise, filtro, projeção, junção, agrupamento e união total.
SQL Server 2012 (11.x)
O SQL Server 2012 (11.x) introduziu o índice columnstore não clusterizado como outro tipo de índice em tabelas rowstore e processamento em lote para consultas em dados columnstore.
- Uma tabela rowstore pode ter um índice columnstore não clusterizado.
- O índice columnstore é de apenas leitura. Depois de criar o índice columnstore, não pode atualizar a tabela usando operações de
INSERT,DELETEeUPDATE; para realizar estas operações, deve eliminar o índice, atualizar a tabela e reconstruir o índice columnstore. Você pode carregar dados adicionais na tabela utilizando a técnica de troca de partições. A vantagem da comutação de partições é que é possível carregar dados sem necessitar de eliminar e reconstruir o índice columnstore. - O índice columnstore sempre requer armazenamento extra, normalmente 10% adicionais sobre rowstore, porque armazena uma cópia dos dados.
- O processamento em lote oferece 2x ou melhor desempenho de consultas, mas só está disponível para execução paralela de consultas.
Conteúdo relacionado
- Columnstore indexes - orientação de design
- Índices de armazenamento em coluna - orientação de carregamento de dados
- Columnstore indexes - desempenho de consultas
- Introdução aos índices columnstore para análise operacional em tempo real
- Índices Columnstore no armazenamento de dados
- Otimize a manutenção do índice para melhorar o desempenho da consulta e reduzir o consumo de recursos