Este tópico descreve o recurso In-Memory Column Index (IMCI) do PolarDB for MySQL.
Informações de fundo
O PolarDB for MySQL foi projetado para cenários de processamento transacional online (OLTP), envolvendo negócios online que geram grandes volumes de dados. No entanto, o armazenamento baseado em linhas do PolarDB for MySQL nem sempre atende facilmente aos requisitos de desempenho de consulta de todos os cenários. Na maioria dos casos, para executar consultas analíticas complexas, é necessário exportar dados do PolarDB for MySQL e importá-los em um sistema de processamento analítico online (OLAP) para análise e consulta. Essa abordagem exige dois sistemas de banco de dados, o que aumenta custos, complexidade arquitetônica e carga operacional.
O PolarDB for MySQL oferece o recurso IMCI para cenários OLAP que envolvem consultas complexas sobre grandes volumes de dados. Com o IMCI, o PolarDB for MySQL fornece uma solução completa de processamento híbrido transacional/analítico (HTAP), integrando processamento transacional e análise de dados em tempo real. Assim, você atende aos requisitos de cenários OLTP e OLAP com apenas um sistema de banco de dados.
Princípios técnicos
O diagrama de arquitetura funcional do recurso Columnstore Index no PolarDB for MySQL é apresentado a seguir:
Conforme ilustrado no diagrama de arquitetura, o PolarDB for MySQL implementou o recurso Columnstore Index com uma arquitetura composta por três camadas: mecanismo de armazenamento, operador de execução e otimizador:
Mecanismo de armazenamento: suporta armazenamento híbrido de linhas e colunas com consistência transacional em tempo real.
Operador de execução: fornece um operador paralelo vetorizado para armazenamentos colunares, permitindo consultas extremamente rápidas em tabelas únicas ou múltiplas.
SQL Parser/Optimizer: conta com um otimizador baseado em custo (CBO) para armazenamento híbrido de linhas e colunas. Ele seleciona automaticamente o armazenamento por linhas ou por colunas para executar solicitações de consulta com base no custo estimado.
Com essa arquitetura, o PolarDB for MySQL alcança 100% de compatibilidade com o protocolo MySQL e oferece aceleração de consultas em várias ordens de grandeza.
Implementação
Para isolar os recursos de computação OLAP e OLTP, os IMCIs só podem ser criados em nós somente leitura. Todas as consultas OLAP são executadas exclusivamente nesses nós. Configure regras de distribuição de consultas para direcionar as consultas OLAP para nós somente leitura com armazenamento por linhas ou por colunas. Overview of HTAP-based request distribution among row store and column store nodes.
Principais vantagens
O PolarDB for MySQL oferece as seguintes vantagens com o recurso Columnstore Index:
Compatibilidade total com MySQL: o sistema de tipos de dados do armazenamento colunar é consistente com o MySQL. Ele suporta conversão flexível de tipos e é 100% compatível com o protocolo MySQL.
Desempenho HTAP excelente: o PolarDB já oferece alto desempenho OLTP nativamente. O Columnstore Index eleva seu desempenho OLAP ao nível de sistemas de banco de dados dedicados a análises.
Redução de custos com armazenamento híbrido: suporta formatos de armazenamento por linhas e por colunas simultaneamente, garantindo consistência transacional em tempo real entre ambos. O armazenamento colunar proporciona custos inerentemente menores.
Cenários
O recurso Columnstore Index do PolarDB for MySQL proporciona uma experiência de product HTAP completa. Ele se aplica a diversos cenários de negócios:
Cenários que exigem análise de dados em tempo real para dados online, como relatórios em tempo real.
Data warehouses dedicados: utilize as capacidades de armazenamento massivo de dados do PolarDB para agregar múltiplas fontes de dados de entrada e funcionar como um data warehouse dedicado.
Computação para aceleração de dados ETL: aproveite as poderosas e flexíveis capacidades de computação do PolarDB, baseadas no Columnstore Index, para implementar funções ETL usando SQL diretamente no PolarDB.

Preços
O recurso IMCI é fornecido gratuitamente. No entanto, os nós somente leitura de armazenamento colunar são cobrados com base nos preços de nós de computação comuns. Para mais informações, consulte Pay-as-you-go prices of compute nodes e Subscription prices of compute nodes. Os IMCIs também ocupam espaço de armazenamento faturável. Para mais detalhes, consulte Storage pricing.
Versões suportadas
-
Um cluster Enterprise Edition que atenda a um dos seguintes requisitos:
PolarDB for MySQL 8.0.1 com versão de revisão 8.0.1.1.22 ou posterior.
PolarDB for MySQL 8.0.2 com versão de revisão 8.0.2.2.12 ou posterior.
-
Um cluster Standard Edition que utilize a arquitetura de CPU X86 e atenda a uma das seguintes condições:
PolarDB for MySQL 8.0.1 com versão de revisão 8.0.1.1.38 ou posterior.
PolarDB for MySQL 8.0.2 com versão de revisão 8.0.2.2.19 ou posterior.
Precauções
O recurso In-Memory Column Index (IMCI) não suporta Global Database Network (GDN).
-
O IMCI pode ser usado em conjunto com o módulo Voting Disk Service (VDS) do recurso failover with hot replica apenas nas seguintes condições:
-
Para clusters com versão de revisão 8.0.1.1.42 ou posterior ou 8.0.2.2.23 ou posterior:
Se o cluster contiver um nó somente leitura com o recurso de failover com réplica quente ativado, será possível adicionar nós somente leitura de armazenamento colunar ao cluster.
Caso já exista um nó somente leitura de armazenamento colunar no cluster, não será possível ativar o recurso de hot standby para nenhum nó somente leitura desse cluster.
-
Para clusters com versão de revisão anterior a 8.0.1.1.42 ou anterior a 8.0.2.2.23, o recurso IMCI não pode ser utilizado em conjunto com o recurso de failover com réplica quente.
-
Se o cluster contiver um nó somente leitura com o recurso de failover com réplica quente ativado, não será possível adicionar nós somente leitura de armazenamento colunar ao cluster.
NotaPara adicionar um nó somente leitura de armazenamento colunar ao cluster, entre em contato com o suporte técnico para desativar o VDS. Durante a desativação do VDS, todos os nós do cluster serão reiniciados automaticamente.
Caso já exista um nó somente leitura de armazenamento colunar no cluster, não será possível ativar o recurso de hot standby para nenhum nó somente leitura desse cluster.
-
-
Melhoria de desempenho
O recurso Columnstore Index acelera significativamente as operações de consulta SQL, melhorando o desempenho de consultas em até centenas de vezes. A seguir, utilizamos tabelas de dados e consultas SQL padrão do teste TPC-H para demonstrar o efeito de aceleração de consultas do Columnstore Index.
Método de teste: o TPC-H é um benchmark amplamente utilizado na indústria. O comitê TPC o desenvolveu e publicou para avaliar as capacidades de consulta analítica de bancos de dados. As consultas TPC-H incluem 8 tabelas de dados e 22 consultas SQL complexas. A maioria das consultas envolve junções de múltiplas tabelas, subconsultas e agregações GROUP BY.
Esta implementação do TPC-H baseia-se no benchmark TPC-H. No entanto, ela não pode ser comparada com resultados oficiais publicados do benchmark TPC-H. Os testes apresentados neste tópico não atendem a todos os requisitos do benchmark TPC-H.
Volume de dados: 100 GB.
-
Resultados dos testes:
-
Comparação de desempenho antes e depois de ativar o Columnstore Index
A figura a seguir compara os tempos de resposta de consulta para 22 instruções de consulta TPC-H executadas antes e depois da ativação do Columnstore Index.

-
Comparação de desempenho com o ClickHouse após ativar o Columnstore Index
A figura a seguir exibe os tempos de resposta de consulta para 21 instruções de consulta TPC-H (excluindo Q21, que o ClickHouse não suporta) após a ativação do Columnstore Index. Ela compara esses tempos com um banco de dados ClickHouse de mesmo volume de dados e estrutura de dados.

-
-
Conclusão:
O Columnstore Index acelera a maioria das operações de consulta complexa. O desempenho de consulta melhora significativamente, chegando a centenas de vezes.
Em comparação com o banco de dados OLAP tradicional ClickHouse: após ativar o Columnstore Index, o PolarDB for MySQL apresenta vantagens e desvantagens de desempenho em relação ao ClickHouse. Ele tem desempenho excepcional em cenários como varredura/agregação (AGG) de tabela única e junções. Futuros recursos do Columnstore Index continuarão a ser otimizados, com avanços esperados em áreas como aceleração de agregação e funções de janela.