Todos os produtos
Search
Central de documentação

PolarDB:Como usar hints

Última atualização: Jun 28, 2026

Os hints do PolarDB-X permitem substituir o comportamento padrão de execução de consultas ao incorporar diretivas diretamente nas instruções SQL. Use hints para direcionar consultas a shards específicos, selecione instâncias somente leitura ou defina o tipo de carga de trabalho.

Sintaxe

O PolarDB-X oferece suporte a dois formatos de hint:

/*+TDDL: hint_command [hint_command ...]*/

/!+TDDL: hint_command [hint_command ...]*/

Uma única instrução SQL pode conter um hint com um ou mais comandos.

Nota

No cliente de linha de comando do MySQL, adicione a flag

-c

ao comando de login ao executar instruções SQL com hints do PolarDB-X. Sem a flag

-c

, o cliente remove o hint antes de enviar a instrução ao servidor. Isso ocorre porque o formato

/+TDDL:.../

é interpretado como um

comentário do MySQL

e o hint não tem efeito. Consulte as

opções do cliente mysql

para obter detalhes.

Comandos de hint disponíveis

Comando de hint

Finalidade

Exemplo

scan()

Consulta os nomes das tabelas físicas em cada shard

/*+TDDL:scan()*/SHOW TABLES;

node(n)

Direciona a consulta para o shard especificado

/*+TDDL:node(0)*/SELECT * FROM t1;

slave()

Encaminha a consulta para uma instância ApsaraDB RDS somente leitura

/*+TDDL:node(0) slave()*/SELECT * FROM t1;

WORKLOAD=AP

Define o tipo de carga de trabalho como processamento analítico (AP)

/*+TDDL:WORKLOAD=AP*/SELECT * FROM t1;

Exemplos

Listar tabelas físicas em todos os shards

Use scan() para consultar os nomes das tabelas físicas em cada shard.

/*+TDDL:scan()*/SHOW TABLES;

Direcionar uma consulta para um shard específico

Use node(n) para enviar uma consulta a um shard específico.

/*+TDDL:node(0)*/SELECT * FROM t1;

Encaminhar uma consulta para uma instância somente leitura

Use slave() para rotear uma consulta para uma instância ApsaraDB RDS somente leitura. O exemplo a seguir direciona a consulta para o Shard 0000 de uma instância ApsaraDB RDS somente leitura:

/*+TDDL:node(0) slave()*/SELECT * FROM t1;

Combinar múltiplos comandos de hint

Combine comandos de hint em um único bloco para aplicar várias diretivas simultaneamente. O exemplo abaixo roteia a consulta para o shard 0 de uma instância ApsaraDB RDS somente leitura:

/*+TDDL:node(0) slave()*/SELECT * FROM t1;

Alternativamente, posicione o hint após a palavra-chave inicial:

SELECT /*+TDDL:node(0) slave()*/ * FROM t1;

Definir o tipo de carga de trabalho

Use WORKLOAD=AP para marcar uma consulta como carga de trabalho de processamento analítico.

/*+TDDL:WORKLOAD=AP*/SELECT * FROM t1;

Limitações

  • Um hint por instrução. Uma única instrução SQL não pode conter mais de um bloco de comentário de hint. O exemplo a seguir é inválido:

    -- Invalid: two separate hint blocks
    SELECT /*+TDDL:node(0)*/ /*+TDDL:slave()*/ * FROM t1;

    Em vez disso, combine ambos os comandos em um único hint:

    SELECT /*+TDDL:node(0) slave()*/ * FROM t1;
  • Sem comandos de hint duplicados. Um hint não pode repetir o mesmo comando. O exemplo a seguir é inválido:

    -- Invalid: node() appears twice
    SELECT /*+TDDL:node(0) node(1)*/ * FROM t1;