Todos os produtos
Search
Central de documentação

PolarDB:Instruções

Última atualização: Jul 01, 2026

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.image

Nota

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.image

Nota

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.image

Etapa 3: Adicionar um IMCI

Adicione IMCIs às tabelas manual ou automaticamente, dependendo dos requisitos de negócio.

Importante

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

Criar um IMCI ao criar uma tabela

-- Add an IMCI for a specific column.
CREATE TABLE <table_name>(
  <column_name_1> INT COMMENT 'COLUMNAR=1',
  <column_name_2> VARCHAR(100)
) ENGINE InnoDB;

-- Add an IMCI for the entire table.
CREATE TABLE <table_name>(
  <column_name_1> INT,
  <column_name_2> VARCHAR(100)
) ENGINE InnoDB COMMENT 'COLUMNAR=1';

Adicionar ou remover dinamicamente um IMCI

-- Add an IMCI for a specific column.
ALTER TABLE <table_name> MODIFY COLUMN <column_name_1> INT COMMENT 'COLUMNAR=1';
               
-- Add an IMCI for the entire table.
ALTER TABLE <table_name> COMMENT 'COLUMNAR=1';

Adicionar ou remover IMCIs em lote no nível de banco de dados ou tabela

-- Add an IMCI for the entire table.
CREATE COLUMNAR INDEX ON <db_name>.<table_name>;

-- Add IMCIs for all tables in a database.
CREATE COLUMNAR INDEX FOR TABLES IN <db_name>;
Nota
  • 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:

image

(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:

Perguntas frequentes

Consulta não utilizando o IMCI

Após adicionar um nó IMCI somente leitura, crie também um IMCI para todas as tabelas consultadas na instrução SQL. A instrução só usará o IMCI se o custo estimado de execução ultrapassar um determinado limiar. Além disso, a instrução SQL precisa ser encaminhada a um nó IMCI somente leitura para ser acelerada. Se uma instrução SQL não estiver usando o IMCI, siga estas etapas para solucionar o problema:

  1. Confirme se a instrução SQL está sendo encaminhada para um nó IMCI somente leitura.

    • Verifique se o Service Node do endpoint do banco de dados inclui um nó IMCI somente leitura.

    • Utilize o SQL Explorer para confirmar o encaminhamento da instrução SQL para um nó IMCI somente leitura.

    Se você usa um Cluster Endpoint com Service Node ativado e o custo estimado de execução da instrução SQL for superior ao limiar loose_imci_ap_threshold ou loose_cost_threshold_for_imci, o PolarProxy encaminhará a instrução SQL para um nó IMCI somente leitura. Também é possível adicionar a sintaxe HINT /*FORCE_IMCI_NODES*/ antes da palavra-chave SELECT para forçar o roteamento da instrução SQL para um nó IMCI somente leitura. Para mais informações, consulte Configurar o limiar de roteamento automático. Exemplo:

    Nas versões menores do mecanismo de banco de dados 8.0.1.1.39 e 8.0.2.2.23 e posteriores, o parâmetro loose_imci_ap_threshold foi descontinuado e substituído pelo parâmetro loose_cost_threshold_for_imci.
    /*FORCE_IMCI_NODES*/EXPLAIN SELECT COUNT(*) FROM t1 WHERE t1.a > 1;
    Criar um novo endpoint de banco de dados garante que as instruções SQL sejam sempre roteadas para nós IMCI somente leitura durante a execução. Para mais informações, consulte Criar um novo endpoint de banco de dados .
  2. Verifique se o custo estimado de execução da instrução SQL excede o limiar configurado.

    Em um nó IMCI somente leitura, o otimizador calcula o custo de execução da instrução SQL. Se o custo estimado de execução superar o limiar definido por loose_imci_ap_threshold ou loose_cost_threshold_for_imci, o otimizador utilizará o IMCI. Caso contrário, ele recorrerá aos índices baseados em linha existentes.

    Após confirmar que uma instrução SQL foi encaminhada para um nó IMCI somente leitura, se o plano de execução visualizado via EXPLAIN ainda não utilizar o IMCI, compare o custo estimado de execução com o limiar predefinido. Isso ajuda a determinar se o IMCI não foi usado porque o custo estimado de execução estava muito baixo. Consulte a variável Last_query_cost_for_imci para obter o custo estimado de execução da instrução SQL anterior:

    -- Use EXPLAIN to view the execution plan of the SQL statement.
    EXPLAIN SELECT * FROM t1;
    -- Get the estimated execution cost of the previous query.
    SHOW STATUS LIKE 'Last_query_cost_for_imci';
    Se você utiliza um endpoint de cluster para se conectar ao banco de dados, recomendamos adicionar a sintaxe HINT /*ROUTE_TO_LAST_USED*/ antes de SHOW STATUS LIKE 'Last_query_cost_for_imci' . Isso assegura a consulta do custo estimado de execução da instrução anterior no nó correto. Por exemplo: /*ROUTE_TO_LAST_USED*/SHOW STATUS LIKE 'Last_query_cost_for_imci';

    Se o custo estimado de execução da instrução SQL for inferior ao limiar configurado, considere ajustar o valor de loose_imci_ap_threshold ou loose_cost_threshold_for_imci. Por exemplo, utilize um HINT para ajustar o limiar de uma única instrução SQL:

    /*FORCE_IMCI_NODES*/EXPLAIN SELECT /*+ SET_VAR(cost_threshold_for_imci=0) */ COUNT(*) FROM t1 WHERE t1.a > 1;
  3. Valide se todas as tabelas e colunas da instrução SQL estão totalmente cobertas por um IMCI.

    Chame o procedimento armazenado integrado dbms_imci.check_columnar_index('<query_string>') para verificar a existência de um IMCI nas tabelas ou colunas de uma instrução SQL. Para mais detalhes, consulte Verificar se um IMCI foi criado para as tabelas ou colunas em uma instrução SQL. Exemplo:

    CALL dbms_imci.check_columnar_index('SELECT COUNT(*) FROM t1 WHERE t1.a > 1');

    Se a instrução SQL não estiver totalmente coberta por um IMCI, a chamada a esse procedimento retornará as tabelas e colunas descobertas. Crie um IMCI para cada tabela e coluna retornada. Se a instrução estiver totalmente coberta, o procedimento retornará um conjunto de resultados vazio.

  4. Verifique a existência de recursos SQL não suportados.

    Revise as limitações de uso da sintaxe IMCI para confirmar se um recurso SQL específico oferece suporte ao IMCI. Para mais informações, consulte Limitações de uso da sintaxe IMCI.

Se a instrução SQL ainda não utilizar o IMCI após as verificações acima, consulte o guia de uso para obter assistência ou entre em contato conosco .

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

Definir uma chave de ordenação para um IMCI

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.

Analisar dados JSON de forma eficiente

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.

Acelerar ETL com IMCI

O recurso Extract, Transform, Load (ETL) permite usar o IMCI em um nó de leitura e gravação (RW). As solicitações SELECT emitidas no nó RW são enviadas a um nó IMCI somente leitura para consultas aceleradas. Após a leitura, o sistema transfere os dados de volta para o nó RW pela rede interna e os grava na tabela de destino.

Ativar Serverless para nós IMCI somente leitura

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.

Acelerar consultas de tabelas largas com Hybrid Plan

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.

Acelerar análise de dados massivos com MPP multinó

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: