Todos os produtos
Search
Central de documentação

PolarDB:Configurar a distribuição automática de solicitações

Última atualização: Jul 01, 2026

Se o seu cenário de negócios exige que consultas OLAP e OLTP sejam enviadas ao banco de dados pela mesma aplicação, defina o modo Read/Write do endpoint do cluster e ative a distribuição automática de solicitações. Com esse recurso ativo, o proxy de banco de dados utiliza o custo estimado das instruções SQL recebidas para rotear as solicitações automaticamente, maximizando o desempenho das consultas. Quando o custo de uma instrução ultrapassa um limiar especificado, o proxy encaminha a solicitação para um nó somente leitura de column store. Caso contrário, um nó somente leitura de row store ou o nó primário processa a solicitação.

Como funciona

O proxy de banco de dados do PolarDB for MySQL utiliza o query cost estimado de uma instrução SQL para definir sua rota. Ao comparar esse custo com um limiar configurável, o proxy direciona a solicitação para um nó de row store ou de column store, otimizando o desempenho de ambos os cenários.

Regras de distribuição de solicitações:

  • Serviço OLTP: abrange principalmente solicitações de leitura e escrita. O nó primário processa todas as solicitações de escrita. Os nós somente leitura de row store ou o nó primário tratam as solicitações de leitura.

  • Serviço OLAP: composto essencialmente por solicitações de leitura. Os nós somente leitura de column store processam todas essas solicitações.

Solução de distribuição automática de solicitações:

  • Distribuição entre o nó primário e os nós somente leitura de column store: como o nó primário também opera em modo row store, ele pode processar solicitações de leitura OLTP. Nessa configuração, as solicitações de escrita e as leituras OLTP são direcionadas ao nó primário, enquanto as leituras OLAP vão para os nós somente leitura de column store.

  • Distribuição entre os nós somente leitura de row store e os nós somente leitura de column store: neste cenário, as solicitações de escrita são enviadas ao nó primário. As leituras OLTP são distribuídas entre os nós somente leitura de row store ou o nó primário, e as leituras OLAP são encaminhadas aos nós somente leitura de column store.

混合下分流

Limitações

Os nós de serviço devem incluir pelo menos um nó somente leitura de column store e um nó de row store (seja o nó primário ou um nó somente leitura de row store).

Etapa 1: Ativar a distribuição automática de solicitações

  1. Faça login no console do PolarDB. No painel de navegação à esquerda, clique em Clusters, selecione a região onde o cluster está implantado e clique no ID do cluster.

  2. Na página Basic Information, na seção PolarProxy, clique em Modify ao lado do endpoint de cluster desejado.

  3. Selecione um modo Read/Write conforme suas necessidades.

    • O modo de leitura e escrita do endpoint do cluster está definido como Read/Write (Automatic Read/Write Splitting).

    • O modo de leitura e escrita do endpoint do cluster está definido como Read-only e a política de balanceamento de carga está configurada como Active requests-based load balancing.

  4. Nas configurações de Node Settings, selecione o nó primário e os nós somente leitura de row store e column store. Na seção HTAP Optimization à direita, ative a opção Transactional/Analytical Processing Splitting. Clique em OK.

    Nota
    • Selecione pelo menos um nó somente leitura de column store nas configurações de Node Settings.

    • Após ativar a opção Transactional/Analytical Processing Splitting, crie um IMCI para que o recurso entre em vigor.

    • A ativação da opção Transactional/Analytical Processing Splitting aplica-se apenas a novas conexões. As conexões existentes não são afetadas; para aplicar a alteração, desconecte e reconecte.

    Exemplo 1: além do nó primário, os nós de serviço incluem um nó somente leitura de row store e dois nós somente leitura de column store. Se você ativar a distribuição automática de solicitações:

    • As solicitações de escrita são roteadas para o nó primário.

    • As solicitações de leitura OLAP são roteadas para os nós somente leitura de column store.

    • As solicitações de leitura OLTP são roteadas para o nó somente leitura de row store. Se a opção Primary Node Accepts Read Requests estiver definida como Yes nas Load Balancing Settings, o proxy também poderá rotear solicitações para o nó primário.

    Exemplo 2: os nós de serviço incluem o nó primário e um nó somente leitura de column store. Ao ativar a distribuição automática de solicitações, as solicitações de escrita e as leituras OLTP são roteadas para o nó primário, enquanto as leituras OLAP são direcionadas ao nó somente leitura de column store.

    Nota

    No modo Read/Write (Automatic Read/Write Splitting), o proxy envia todas as solicitações de escrita para o nó primário, independentemente de o nó primário estar selecionado como nó de serviço.

Etapa 2: Configurar o limiar de distribuição

Após ativar a distribuição automática de solicitações, defina o limiar de query cost. O proxy de banco de dados usa esse valor para rotear as solicitações. Se o custo de consulta de uma solicitação exceder o limiar, o proxy a encaminhará para um nó de column store. Caso contrário, o roteamento será feito para um nó de row store.

Os parâmetros listados na tabela a seguir controlam o limiar de custo de consulta. Modifique esses valores na página Parameters do seu cluster para ajustar a distribuição automática de solicitações.

Parâmetro

Descrição

loose_imci_ap_threshold

Limiar de custo de consulta para rotear instruções SQL para nós de column store. Valor padrão: 50000.

Nota

Com a distribuição automática de solicitações ativada, o proxy roteia instruções SQL com custo de consulta superior a 50000 para os nós de column store.

Importante

Nas versões 8.0.1.1.39, 8.0.2.2.23 e posteriores do PolarDB for MySQL, este parâmetro foi descontinuado. Utilize loose_cost_threshold_for_imci em seu lugar.

loose_cost_threshold_for_imci

Limiar de custo de consulta usado nos nós de column store para determinar se um plano de execução column-store deve ser utilizado. Valor padrão: 50000.

Nota

Quando a distribuição automática de solicitações está ativa, se o custo de consulta de uma instrução SQL for maior que 50000, o sistema seleciona um plano de execução column-store. Caso contrário, opta por um plano row-store.

Execute o comando SHOW STATUS LIKE 'Last_query_cost_for_imci' para verificar o custo de consulta da última instrução SQL. Essa informação auxilia no ajuste dos valores dos parâmetros.

Nota

Caso se conecte ao banco de dados por meio de um endpoint de cluster, adicione o hint /* ROUTE_TO_LAST_USED*/ antes do comando SHOW STATUS LIKE 'Last_query_cost_for_imci'. Isso garante a recuperação correta do custo de consulta da instrução anterior a partir do nó adequado. Exemplo:

/*ROUTE_TO_LAST_USED*/SHOW STATUS LIKE 'Last_query_cost_for_imci';

Por exemplo, execute a seguinte instrução para visualizar o custo de consulta da instrução SQL anterior:

/*ROUTE_TO_LAST_USED*/SHOW STATUS LIKE 'Last_query_cost_for_imci';

A saída será semelhante a esta:

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| Last_query_cost_for_imci | 2     |
+--------------------------+-------+
1 row in set (0.01 sec)

O custo de consulta da instrução SQL é 2.

Para rotear essa consulta SQL para um nó de column store visando uma execução column-store, configure os parâmetros da seguinte forma:

  • Para versões 8.0.1.1.38, 8.0.2.2.22 e anteriores do PolarDB for MySQL

    Defina os parâmetros loose_imci_ap_threshold e loose_cost_threshold_for_imci como 1.

  • Para versões 8.0.1.1.39, 8.0.2.2.23 e posteriores do PolarDB for MySQL

    Defina o parâmetro loose_cost_threshold_for_imci como 1.

Forçar planos de execução com hints

Se a distribuição automática de solicitações não atender às suas expectativas, utilize hints para forçar um plano de execução row-store ou column-store.

Nota
  • Um hint aplica-se exclusivamente à instrução SQL em que foi especificado, sem afetar outras instruções ou conexões.

  • Ao utilizar um cliente MySQL anterior à versão 5.7.7 para executar instruções com hints, adicione a opção --comments durante a conexão com o mecanismo de banco de dados. Verifique a versão do seu cliente MySQL executando o comando mysql --version.

  • Forçar um plano de execução column-store.

    • Para versões 8.0.1.1.38, 8.0.2.2.22 e anteriores do PolarDB for MySQL

      Ao usar o proxy de banco de dados para distribuição automática de solicitações, utilize um hint para forçar o roteamento de uma instrução SQL para um nó de column store, ignorando a configuração do parâmetro loose_imci_ap_threshold. Adicione /* FORCE_IMCI_NODES */ antes da palavra-chave SQL. Exemplo:

      /*FORCE_IMCI_NODES*/EXPLAIN SELECT COUNT(*) FROM t1 WHERE t1.a > 1;

      Uma instrução SQL roteada para um nó de column store ainda sofre influência da configuração do parâmetro loose_cost_threshold_for_imci. Para forçar o uso de um plano de execução column-store, use um hint para reduzir o valor de loose_cost_threshold_for_imci. Exemplo:

      /*FORCE_IMCI_NODES*/EXPLAIN SELECT /*+ SET_VAR(cost_threshold_for_imci=0) */ COUNT(*) FROM t1 WHERE t1.a > 1;
    • Para versões 8.0.1.1.39, 8.0.2.2.23 e posteriores do PolarDB for MySQL

      Utilize um hint para definir o parâmetro loose_cost_threshold_for_imci como 0.

      EXPLAIN SELECT /*+ SET_VAR(cost_threshold_for_imci=0) */ COUNT(*) FROM t1 WHERE t1.a > 1;
    Nota

    Ao usar /*+SET_VAR()*/ para modificar um limiar, remova o prefixo loose_ do nome do parâmetro. Caso contrário, o hint não surtirá efeito.

  • Forçar um plano de execução row-store.

    Use um hint para definir o valor de USE_IMCI_ENGINE como OFF. Isso força a instrução SQL a utilizar um plano de execução row-store. Exemplo:

    EXPLAIN SELECT /*+ SET_VAR(USE_IMCI_ENGINE=OFF) */ COUNT(*) FROM t1 WHERE t1.a > 1;