Consulte a seção Início rápido para configurar seu cluster para cargas de trabalho de Processamento Transacional/Analítico Híbrido (HTAP) ou a seção Uso avançado para personalizar o IMCI conforme requisitos específicos de negócio.
Início rápido
Etapa 1: Adicionar um nó IMCI somente leitura
Faça login no console do PolarDB. No painel de navegação à esquerda, clique em Clusters. Selecione a região do cluster e localize-o. Na coluna Actions, clique em Add/Remove Node para adicionar um nó IMCI somente leitura.
Se você já adicionou um nó IMCI somente leitura durante a compra do cluster, ignore esta etapa.
O cluster deve atender aos requisitos de versão do IMCI. Para mais informações, consulte nó IMCI somente leitura.
Etapa 2: Configurar o roteamento de solicitações
Escolha o roteamento automático ou manual de solicitações para usar o IMCI conforme as necessidades do seu negócio.
Roteamento automático de solicitações: Use esta opção se as cargas de trabalho de Processamento Transacional Online (OLTP) e Processamento Analítico Online (OLAP) acessarem o banco de dados pela mesma aplicação. O sistema encaminha automaticamente as solicitações de leitura para nós IMCI somente leitura ou nós de armazenamento em linha somente leitura com base no custo estimado de execução, determinado pelo número de linhas verificadas.
Roteamento manual de solicitações: Use esta opção se as cargas OLTP e OLAP acessarem o banco de dados por aplicações diferentes. Configure endpoints de cluster distintos para cada aplicação e direcione as solicitações para os armazenamentos em linha ou colunares atribuindo nós IMCI somente leitura e nós de armazenamento em linha somente leitura aos nós de serviço dos respectivos endpoints.
Roteamento automático de solicitações
Na página de detalhes do cluster, acesse a seção Database Connections. No Cluster Endpoint, defina o Service Node como Enable.
As alterações no Service Node entraram em vigor apenas para novas conexões. Reconecte-se ao cluster após aplicar a modificação.
Se você conectar-se ao cluster via DMS, observe que o DMS usa o Primary address por padrão. É necessário usar manualmente o endpoint do cluster para conectar-se ao cluster PolarDB.
O limiar padrão de custo estimado de execução para o roteamento automático é de 50.000 linhas verificadas. Ajuste esse parâmetro conforme as demandas do seu negócio. Para mais informações, consulte Ajustar este parâmetro.
Roteamento manual de solicitações
Na página de detalhes do cluster, acesse a seção Database Connections e crie um endpoint personalizado. Certifique-se de que o Service Node inclua apenas o Service Node.
Etapa 3: Adicionar um IMCI
Adicione IMCIs às tabelas manual ou automaticamente, dependendo dos requisitos de negócio.
Para acelerar uma consulta com o IMCI, todas as colunas referenciadas na instrução SQL devem estar totalmente cobertas por um IMCI.
Manual
O IMCI oferece um conjunto completo de instruções DDL para adicionar ou remover índices colunares em tabelas de negócio. Escolha a opção adequada ao seu cenário:
|
Sintaxe DDL |
Exemplo |
|
|
|
|
|
Adicionar ou remover IMCIs em lote no nível de banco de dados ou tabela |
|
Ao adicionar um IMCI, preserve os comentários existentes. Exemplo:
ALTER TABLE <table_name> COMMENT 'COLUMNAR=1 <original comment>';.Por padrão, ao adicionar um IMCI em lote no nível de banco de dados ou tabela, o comentário da tabela é atualizado para
'COLUMNAR=1 <original comment>'.
Automático
O recurso AutoIndex cria automaticamente IMCIs com base nas consultas lentas, melhorando significativamente a velocidade de execução. Isso elimina a necessidade de analisar e ajustar cada consulta lenta individualmente. Conforme a carga de trabalho da aplicação muda, o AutoIndex monitora e ajusta continuamente a estratégia de IMCI para garantir que o cluster PolarDB mantenha o desempenho ideal.
Para aproveitar os benefícios desse recurso, ative o AutoIndex clicando em Enable na página de detalhes do cluster PolarDB:

(Opcional) Etapa 4: Verificar o progresso de criação do IMCI
Após adicionar manualmente um IMCI, verifique o progresso da criação. Aguarde a conclusão do processo para obter a aceleração das consultas.
SELECT * FROM INFORMATION_SCHEMA.IMCI_ASYNC_DDL_STATS;
Exemplo: Confirme se o valor na coluna STATUS é Safe to read para validar que o IMCI foi totalmente criado.
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
| SCHEMA_NAME | TABLE_NAME | CREATED_AT | STARTED_AT | FINISHED_AT | STATUS | APPROXIMATE_ROWS | SCANNED_ROWS | SCAN_SECOND | SORT_ROUNDS | SORT_SECOND | BUILD_ROWS | BUILD_SECOND | AVG_SPEED | SPEED_LAST_SECOND | ESTIMATE_SECOND |
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
| tpch | lineitem | 2024-10-21 13:44:02 | 2024-10-21 13:44:02 | 2024-10-21 13:50:11 | Safe to read | 590446240 | 600037902(100%) | 369 | 0 | 0 | 0(0%) | 0 | 1625058 | 0 | 0 |
+-------------+------------+---------------------+---------------------+---------------------+--------------+------------------+-----------------+-------------+-------------+-------------+------------+--------------+-----------+-------------------+-----------------+
1 row in set, 1 warning (0.00 sec)
(Opcional) Etapa 5: Verificar o uso do IMCI
Um plano de execução IMCI aparece como uma árvore horizontal, com formato distinto dos planos de armazenamento em linha. Utilize a instrução EXPLAIN para visualizar o plano de execução e determinar se uma instrução SQL pode ser acelerada pelo IMCI. Os exemplos abaixo ilustram essa diferença:
Plano de execução IMCI
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
| ID | Operator | Name | E-Rows | E-Cost | Extra Info |
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
| 1 | Select Statement | | | | IMCI Execution Plan (max_dop = 4, max_query_mem = 858993459) |
| 2 | └─Sort | | | | Sort Key: revenue DESC,o_orderdate ASC |
| 3 | └─Hash Groupby | | | | Group Key: (lineitem.L_ORDERKEY, orders.O_ORDERDATE, orders.O_SHIPPRIORITY) |
| 4 | └─Hash Join | | | | Join Cond: orders.O_ORDERKEY = lineitem.L_ORDERKEY |
| 5 | ├─Hash Join | | | | Join Cond: customer.C_CUSTKEY = orders.O_CUSTKEY |
| 6 | │ ├─Table Scan | customer | | | Cond: (C_MKTSEGMENT = "BUILDING") |
| 7 | │ └─Table Scan | orders | | | Cond: (O_ORDERDATE < 03/24/1995) |
| 8 | └─Table Scan | lineitem | | | Cond: (L_SHIPDATE > 03/24/1995) |
+----+----------------------------+----------+--------+--------+-----------------------------------------------------------------------------+
8 rows in set (0.01 sec)
Plano de execução de armazenamento em linha
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
| 1 | SIMPLE | customer | NULL | ALL | PRIMARY | NULL | NULL | NULL | 147630 | 10.00 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | orders | NULL | ref | PRIMARY,ORDERS_FK1 | ORDERS_FK1 | 4 | tpch100g.customer.C_CUSTKEY | 14 | 33.33 | Using where |
| 1 | SIMPLE | lineitem | NULL | ref | PRIMARY | PRIMARY | 4 | tpch100g.orders.O_ORDERKEY | 4 | 33.33 | Using where |
+----+-------------+----------+------------+------+--------------------+------------+---------+-----------------------------+--------+----------+----------------------------------------------+
3 rows in set, 1 warning (0.00 sec)
Ferramentas auxiliares
Ao consultar instruções SQL complexas com o IMCI, verifique se alguma coluna da instrução SQL não está coberta por um IMCI. Para isso, consulte Verificar se alguma coluna em uma instrução SQL não está coberta por um IMCI. Caso encontre colunas descobertas, obtenha as instruções DDL para criar um IMCI específico para essa instrução SQL ou obtenha em lote as instruções DDL para criar IMCIs para uma carga de trabalho específica. Após executar as instruções DDL, garanta que todas as colunas referenciadas estejam cobertas por um IMCI para habilitar a aceleração da consulta.
O PolarDB fornece os seguintes procedimentos armazenados integrados:
Verificar se alguma coluna em uma instrução SQL não está coberta por um IMCI:
dbms_imci.check_columnar_index('<query_string>');.Obter as instruções DDL para criar um IMCI:
dbms_imci.columnar_advise('<query_string>');edbms_imci.columnar_advise_by_columns('<query_string>');.Obter em lote as instruções DDL para criar IMCIs:
dbms_imci.columnar_advise_begin();,dbms_imci.columnar_advise_show();edbms_imci.columnar_advise_end();.
Perguntas frequentes
Consulta não utilizando o IMCI
Para mais informações, consulte as Perguntas frequentes sobre IMCI.
Uso avançado
Consulte os tópicos a seguir para otimizar o uso do IMCI.
|
Recurso avançado |
Descrição |
|
O IMCI organiza dados em grupos de linhas. Em cada grupo, diferentes colunas são compactadas em blocos de dados colunares. Esses blocos são construídos em paralelo com base na ordem da chave primária dos dados originais baseados em linha, resultando em um estado geral não ordenado. Configure uma chave de ordenação para reorganizar os blocos de dados colunares e melhorar o desempenho das consultas. |
|
|
Projetado para análises de dados estruturados e semiestruturados em grande escala, o IMCI integra recursos como JSON colunar, colunas virtuais, Instant DDL e expansão de contagem de colunas. |
|
|
O recurso Extract, Transform, Load (ETL) permite usar o IMCI em um nó de leitura e gravação (RW). As solicitações |
|
|
O recurso Serverless dimensiona automaticamente os recursos para cima ou para baixo conforme a carga de trabalho. Ele aumenta a capacidade durante horários de pico para lidar com picos de demanda e reduz a capacidade em horários de baixa atividade para diminuir custos. |
|
|
Um Hybrid Plan utiliza índices colunares e de linha na mesma consulta. O Hybrid Plan pode melhorar significativamente o desempenho de consultas em tabelas largas. No plano de execução, as partes que se beneficiam de índices colunares são executadas no IMCI e produzem resultados intermediários contendo apenas chaves primárias. Em seguida, as colunas necessárias são buscadas e retornadas usando as chaves primárias com o índice primário do InnoDB. |
|
|
Mais indicado para consultas complexas em volumes massivos de dados, onde um único nó IMCI somente leitura pode não atender aos requisitos de desempenho. Utilize o processamento paralelo multinó (MPP) para acelerar essas consultas. |
Saiba mais
Para entender melhor os princípios por trás do IMCI, consulte os seguintes documentos:
Artigo sobre o PolarDB In-Memory Column Index (IMCI) publicado no SIGMOD 2023