Quando uma consulta apresenta lentidão ou retorna resultados inesperados, compreender como o AnalyticDB for MySQL processa e executa SQL é fundamental para interpretar planos de execução, analisar a saída de diagnósticos SQL e identificar onde a consulta consome mais tempo. O AnalyticDB for MySQL divide cada consulta SQL em uma hierarquia de stages, tasks e operators antes de executá-la no cluster.
Como o AnalyticDB for MySQL processa uma consulta
Ao enviar uma consulta SQL, o AnalyticDB for MySQL a processa em cinco etapas:
O cliente envia a instrução SQL para um nó controller — o nó de acesso frontend do AnalyticDB for MySQL. Para obter detalhes sobre nós de acesso, consulte Arquitetura técnica.
O parser do nó controller analisa a instrução, converte-a em uma árvore de sintaxe e gera um plano de execução lógico preliminar.
O optimizer do nó controller avalia o plano preliminar e o reescreve conforme necessário. Esse componente produz um plano de execução lógico final que especifica o tipo de junção, a ordem de junção, o método de agregação e o método de redistribuição de dados. Com base nos requisitos de transmissão de rede, o optimizer também determina se é necessário dividir o plano.
Um nó executor recebe o plano de execução lógico final e o converte em um plano de execução físico, composto por stages e operators que processam os dados segundo regras específicas.
O nó executor retorna os resultados ao cliente ou os grava em tabelas do AnalyticDB for MySQL e em sistemas de armazenamento externo, como o Object Storage Service (OSS).
Conceitos do plano de execução
Stage
Um stage é uma parte física do plano de execução. Durante a execução, a consulta se divide em múltiplos stages. Cada stage:
Obtém dados do sistema de armazenamento subjacente ou os recebe via rede.
É formado por tasks do mesmo tipo distribuídas entre diferentes nós executores.
Executa suas tasks em paralelo para maximizar o throughput.
O recurso de diagnósticos SQL permite visualizar resultados de diagnóstico no nível de stage. Para mais detalhes, consulte
Resultados de diagnóstico no nível de stage
.
Task
Uma task representa a unidade de execução de um stage em um único nó executor. Cada stage distribui seu trabalho entre várias tasks do mesmo tipo, e todas elas são executadas em paralelo dentro do cluster.
Operator
Um operator é a unidade básica de processamento de dados no AnalyticDB for MySQL. O sistema define se os operators serão executados em modo paralelo ou serial com base na semântica de cada operator e nas dependências entre eles.
O recurso de diagnósticos SQL permite visualizar resultados de diagnóstico no nível de operator. Para mais detalhes, consulte
Resultados de diagnóstico no nível de operator
.
Exemplo: consulta de agregação por grupo
A figura a seguir ilustra a execução de uma consulta de agregação por grupo. O nó controller divide o plano de execução lógico em shards e os distribui para os nós executores.

|
Stage |
Tasks |
Descrição |
|
Stage 2 |
4 |
Varre, filtra e agrega parcialmente os dados em paralelo. |
|
Stage 1 |
2 |
Agrega os resultados do Stage 2 em paralelo. |
|
Stage 0 |
1 |
Coleta e retorna os resultados finais de agregação do Stage 1. |
Próximos passos
Resultados de diagnóstico no nível de stage — Diagnostique o desempenho de consultas no nível de stage usando o recurso de diagnósticos SQL.
Resultados de diagnóstico no nível de operator — Identifique os operators mais lentos dentro de um stage.