Todos os produtos
Search
Central de documentação

ApsaraDB RDS:HTAP query routing

Última atualização: Oct 12, 2026

Se o seu negócio exige o processamento simultâneo de cargas OLTP (processamento transacional online) de alta concorrência e cargas OLAP (processamento analítico online) complexas, adicione uma instância somente leitura analítica baseada em DuckDB à sua instância RDS for MySQL. Com um proxy de banco de dados, é possível ativar o roteamento automático de consultas HTAP ou o roteamento manual com hint. Esse recurso encaminha consultas OLAP para a instância somente leitura analítica baseada em DuckDB e consultas OLTP para a instância primária ou para instâncias somente leitura comuns, permitindo integrar com eficiência o processamento de transações e a análise de dados.

Visão geral

A solução de roteamento de consultas HTAP para RDS for MySQL aproveita as vantagens distintas de diferentes mecanismos de armazenamento. Um proxy de banco de dados encaminha automaticamente as solicitações para o tipo de instância mais adequado, com base no custo estimado de execução das consultas SQL. Isso ajuda a isolar cargas de trabalho e otimizar o desempenho.

Tipos de instância

  • Instância orientada a linhas: A instância primária do RDS for MySQL e regular read-only instances. Essas instâncias usam o mecanismo InnoDB e são ideais para processar solicitações de leitura e escrita OLTP de alta concorrência.

  • Instância columnstore: A DuckDB-based analytical read-only instance. Esta instância utiliza o mecanismo DuckDB e é adequada para consultas analíticas OLAP complexas.

Métodos de roteamento

O RDS for MySQL oferece suporte aos dois métodos de roteamento de consultas a seguir:

  • Roteamento automático de consultas HTAP: Encaminha automaticamente consultas OLAP e OLTP para instâncias columnstore ou orientadas a linhas, com base no custo estimado de execução da instrução SQL.

  • Roteamento manual com hint: Caso o roteamento automático não seja eficaz, ou se a sua versão do MySQL não oferecer suporte à estimativa de custos, utilize um hint para especificar manualmente o destino do roteamento.

Custo de execução de SQL

Ao usar o roteamento automático, execute o comando SHOW STATUS LIKE 'Last_query_cost' para verificar o custo estimado de execução de uma instrução SQL. Isso ajuda a entender a base para as decisões de roteamento. Recomendamos executar a instrução EXPLAIN antes de verificar o custo de execução.

Exemplo

Visualize o custo estimado de execução da instrução SELECT COUNT(*) FROM sbtest5.sbtest1:

EXPLAIN SELECT COUNT(*) FROM sbtest5.sbtest1;
SHOW STATUS LIKE 'Last_query_cost';

-- Example result:
+-------------------+---------------+
| Variable_name     | Value         |
+-------------------+---------------+
| Last_query_cost   | 84454.999000  |
+-------------------+---------------+

O resultado indica que o custo estimado de execução da instrução SQL é 84454.999000. O sistema utiliza esse valor de custo para determinar se deve rotear a consulta para uma instância columnstore.

Pré-requisitos

Para utilizar o roteamento automático de consultas HTAP, a instância primária deve atender às seguintes condições:

  • A instância executa MySQL 8.0 com versão secundária do mecanismo 20250731 ou posterior, ou MySQL 5.7 com versão secundária do mecanismo 20260228 ou posterior.

  • Uma DuckDB-based analytical read-only instance foi adicionada.

  • O recurso database proxy está ativado e a versão do proxy de banco de dados é 2.25.8 ou superior.

Nota

Para atualizar a versão secundária do mecanismo MySQL e a versão do proxy de banco de dados, consulte Upgrade the minor engine version e Upgrade the minor engine version of a database proxy.

Observações de uso

  • As configurações de latency threshold e consistency level do proxy de banco de dados também se aplicam a instâncias somente leitura analíticas baseadas em DuckDB.

  • O peso de leitura das instâncias somente leitura analíticas baseadas em DuckDB afeta apenas o balanceamento de carga entre essas instâncias e não influencia a lógica de roteamento entre instâncias orientadas a linhas e columnstore.

  • Caso todas as instâncias somente leitura analíticas baseadas em DuckDB atinjam a capacidade máxima, as consultas analíticas subsequentes serão enfileiradas para processamento nessas instâncias.

  • Após definir a read weight do endpoint do proxy como Custom, o peso de leitura de qualquer nova instância somente leitura analítica baseada em DuckDB adicionada à instância primária terá o valor padrão 0 e deverá ser configurado manualmente.

Nota

É possível configurar de forma flexível o limiar de latência, o nível de consistência, o atributo de leitura/escrita e os pesos de leitura do proxy de banco de dados. Para mais informações, consulte Configure a database proxy.

Roteamento automático de consultas HTAP

Ativar o roteamento automático de consultas

  1. Faça login no console RDS. No painel de navegação à esquerda, clique em Instances. Na barra de navegação superior, selecione a região da sua instância.

  2. Na página Instances, clique no ID da instância primária desejada. A instância primária é marcada com um ícone image.

  3. No painel de navegação à esquerda, clique em Database Proxy.

  4. Na seção Connection Information, localize o endpoint do proxy desejado e clique em Modify Configuration na coluna Actions.

  5. Na caixa de diálogo exibida, ative HTAP Query Routing e clique em OK.

Alocar pesos de leitura para instâncias DuckDB

Se a sua instância RDS for MySQL possuir várias instâncias somente leitura analíticas baseadas em DuckDB, defina um peso de leitura para cada instância conforme as necessidades do seu negócio. Por padrão, o peso de leitura do endpoint do proxy é Automatic. Um peso de leitura maior significa que a instância processará mais solicitações de leitura.

  1. Faça login no console RDS. No painel de navegação à esquerda, clique em Instances. Na barra de navegação superior, selecione uma região.

  2. Na página Instances, clique no ID da instância primária desejada, marcada com um ícone image.

  3. No painel de navegação à esquerda, clique em Database Proxy.

  4. Na seção Connection Information, localize o endpoint do proxy desejado e clique em Modify Configuration na coluna Actions.

  5. Na caixa de diálogo exibida, defina Read Weight Allocation como Custom.

    Após definir como Custom, o peso de leitura de qualquer nova instância somente leitura analítica baseada em DuckDB adicionada a esta instância primária terá o valor padrão 0 e deverá ser configurado manualmente.

  6. Na seção DuckDB Analytical Read-Only Instance Read Weight Allocation, defina o peso de leitura para cada instância somente leitura analítica baseada em DuckDB conforme necessário.

    Por exemplo, suponha que uma instância primária e suas três instâncias somente leitura analíticas baseadas em DuckDB tenham seus pesos de leitura definidos como 0, 100, 200 e 200, respectivamente. Isso significa que a instância primária não processa solicitações de leitura (as solicitações de escrita continuam sendo enviadas automaticamente para ela), e as três instâncias somente leitura processam solicitações de leitura na proporção de 1:2:2.

    Nota
    • O peso de leitura pode ser definido com um valor de 0 a 10.000.

    • Se uma instância somente leitura analítica baseada em DuckDB for excluída, seu peso será removido automaticamente. Os pesos das demais instâncias permanecem inalterados.

    • As alterações neste parâmetro entram em vigor imediatamente e não causam interrupções no serviço. As conexões existentes não são encerradas. Tanto as novas conexões quanto as existentes são roteadas com base nos novos pesos.

Configurar o limiar de custo de execução de SQL

Ao ativar o roteamento automático de consultas HTAP, o limiar de custo de execução de SQL assume o valor padrão de 500.000. Na maioria dos casos, esse valor padrão é suficiente para rotear solicitações de banco de dados:

  • Solicitações com custo estimado abaixo do limiar de custo de execução de SQL são roteadas para uma instância orientada a linhas (a instância primária ou uma instância somente leitura comum).

  • Solicitações com custo estimado acima do limiar de custo de execução de SQL são roteadas para uma instância columnstore (uma instância somente leitura analítica baseada em DuckDB).

Caso precise definir um limiar personalizado mais adequado às necessidades do seu negócio, siga as etapas abaixo:

  1. Estimate the SQL execution cost based on your business requirements.

  2. Configure o limiar de custo de execução de SQL:

    1. Faça login no console RDS. No painel de navegação à esquerda, clique em Instances. Na barra de navegação superior, selecione uma região.

    2. Na página Instances, clique no ID da instância primária desejada, marcada com um ícone image.

    3. No painel de navegação à esquerda, clique em Database Proxy.

    4. Na seção Connection Information, localize o endpoint do proxy desejado e clique em Modify Configuration na coluna Actions.

    5. Na caixa de diálogo, modifique o SQL Execution Cost Threshold for HTAP Automatic Query Routing e clique em OK.

Roteamento manual com hint

Se o roteamento automático apresentar baixo desempenho, ou se a estimativa de custos não estiver disponível para a sua versão do MySQL, adicione um hint a uma instrução SQL para forçar uma rota de consulta específica. O hint afeta apenas a instrução SQL atual.

  • Forçar roteamento para uma instância columnstore (instância somente leitura analítica baseada em DuckDB)

    /*force_ap_nodes*/ SELECT COUNT(*) FROM <target_table_name>;
  • Forçar roteamento para uma instância orientada a linhas (instância primária ou instância somente leitura comum)

    SELECT /*+set_var(rds_cost_threshold_for_duckdb = 0)*/ COUNT(*) FROM <target_table_name>;

Documentos e APIs relacionados

Apêndice: Princípios do roteamento automático de consultas HTAP

  1. O proxy de banco de dados recebe uma consulta e a encaminha para uma instância orientada a linhas, como a instância primária ou uma instância somente leitura comum.

  2. O otimizador na instância orientada a linhas analisa a consulta e estima se o seu custo de execução excede o limiar configurado.

    • Se o custo estimado de execução estiver abaixo do limiar de custo de execução de SQL, a consulta será executada em uma instância orientada a linhas. Caso existam várias instâncias somente leitura comuns, a consulta será roteada com base nas regras de balanceamento de carga.

    • Se o custo estimado de execução estiver acima do limiar de custo de execução de SQL, a consulta será executada em uma instância columnstore. Se houver múltiplas instâncias columnstore, o roteamento da consulta seguirá as regras de balanceamento de carga.