Todos os produtos
Search
Central de documentação

Database Autonomy Service:Otimização de SQL

Última atualização: Jun 27, 2026

O Database Autonomy Service (DAS) oferece um recurso de otimização de SQL que gera automaticamente resultados de diagnóstico, sugestões de otimização e estimativas de ganho de desempenho. Analise esses resultados para decidir se adota as sugestões. Este tópico descreve como usar o recurso de otimização de SQL.

Pré-requisitos

  • O mecanismo de banco de dados deve ser um dos seguintes:

    • RDS for MySQL

      Nota

      As edições Basic e Cluster do RDS for MySQL não são compatíveis.

    • MyBase MySQL

    • PolarDB for MySQL

      Nota

      Clusters de nó único (antigas instâncias autônomas) do PolarDB for MySQL não são compatíveis.

    • PolarDB-X 2.0

      Nota

      Instâncias do PolarDB-X 2.0 com versão principal 5.4.13 e versão secundária no intervalo [16415631,16504348] não são compatíveis. Para verificar a versão da sua instância PolarDB-X 2.0, consulte Visualizar e atualizar a versão de uma instância.

    • MongoDB

  • A instância de destino está conectada ao DAS. Para mais informações, consulte Conectar uma instância ao DAS.

  • O status de acesso da instância de destino é Normal Access.

Limitações

  • Não é possível diagnosticar ou otimizar instruções SQL em tabelas que usam o X-Engine.

  • No PolarDB-X, ao executar uma instrução SQL com prepared statement, o log de consultas lentas registra separadamente o modelo da instrução (por exemplo, select * from test where a = ? and b = ?) e os parâmetros vinculados (por exemplo, params: [1, 2]). Como esse formato não pode ser executado diretamente como uma instrução SQL válida, recursos dependentes da instrução original para análise ou otimização podem apresentar limitações.

Crie análise visual de SQL a partir de logs lentos

Este recurso apresenta fluxos complexos de execução de SQL em formato visual e intuitivo. A interface gráfica exibe claramente o caminho de execução da consulta, a eficiência dos nós e possíveis gargalos. Isso ajuda a identificar e corrigir problemas rapidamente durante a otimização de SQL, revisões de código e verificações de integridade.

Importante

A otimização de SQL na página Slow Log Analysis é compatível apenas com instâncias RDS for MySQL 5.6, 5.7, and 8.0 e PolarDB for MySQL 5.6, 5.7, and 8.0.

  1. Faça login no console do DAS.

  2. No painel de navegação à esquerda, clique em Intelligent O&M Center > Instance Monitoring.

  3. Localize a instância de destino e clique em no ID da instância para abrir a página de detalhes.

  4. No painel de navegação à esquerda, clique em Request Analysis > Slow Logs.

  5. Na página Slow Log Analysis:

    • Na aba Slow Log Statistics, localize o modelo SQL desejado e clique em Optimize na coluna Actions.

    • Na aba Slow Log Details, localize a instrução SQL de destino e clique em Optimize na coluna Actions.

  6. Na caixa de diálogo exibida, clique em Create Plan.

  7. Selecione um tipo de nó de execução.

    • Standby node (Padrão): Nó standby da instância atual. Use este nó principalmente para análises de consulta rotineiras.

    • Event node: Nó de negócio onde a instrução SQL foi efetivamente executada. Recomendado para solução de problemas e otimização.

  8. Clique em Confirm Creation para gerar um Visual Execution Plan.

Plano de execução visual

Importante
  • O plano de execução visual reflete o status atual da execução, não um registro histórico.

  • A matriz visual se adapta à complexidade da instrução SQL. Se o gráfico contiver muito conteúdo, use a ferramenta de zoom para ajustar a escala de exibição ou clique em no botão de redefinição para retornar à visualização inicial.

Em um plano de execução visual, os fluxos seguem de baixo para cima e da esquerda para a direita. O nó inferior representa o ponto de partida da consulta. Os dados fluem camada por camada até o retorno do resultado final. Exemplo:

Cores dos nós

  • Nó eficiente (verde): Indica método de acesso eficiente, incluindo: system, const, eq_ref, ref, ref_or_null e index_merge.

  • Nó moderadamente eficiente (amarelo): Sinaliza método de acesso subótimo, abrangendo: fulltext, unique_subquery, index_subquery e range.

  • Nó ineficiente (vermelho): Aponta método de acesso ineficiente prioritário para otimização, como: all e index.

Detalhes do nó

  • Superior: Exibe o tipo de nó, como TABLE_SCAN ou INDEX_SCAN.

  • Esquerda: Mostra o custo, métrica relativa estimada pelo otimizador com base em fatores como CPU, memória e I/O de disco.

  • Direita: Apresenta o número estimado de linhas retornadas, indicando o volume de processamento de dados.

Sugestão de otimização

Priorize a otimização dos nós ineficientes marcados em vermelho para melhorar significativamente o desempenho da consulta.

Glossário

Termo

Nome comum

Descrição

QUERY_BLOCK

bloco de consulta

Unidade semântica de uma instrução SQL. Cada consulta ou subconsulta independente constitui um bloco de consulta, identificado por select_id na saída do EXPLAIN.

ATTACHED_SUBQUERIES

subconsulta anexada

Subconsulta vinculada a uma cláusula WHERE, HAVING ou ON por meio de predicados como EXISTS, IN ou ANY. Esse tipo de subconsulta possui dependência lógica da consulta principal.

CORRELATED_SUBQUERY

subconsulta correlacionada

Consulta aninhada que referencia colunas de uma consulta externa. Exige vinculação a valores de contexto externos durante a execução e pode resultar em complexidade O(n²).

NON_CORRELATED_SUBQUERY

subconsulta não correlacionada

Subconsulta autossuficiente executável independentemente da consulta externa. O otimizador geralmente a pré-calcula e materializa como constante.

MATERIALIZED_FROM_SUBQUERY

subconsulta materializada

Estratégia de otimização introduzida no MySQL 5.6+. Persiste o resultado da subconsulta em tabela temporária na memória e frequentemente se associa a uma tabela derivada no formato subqueryN.

OPTIMIZED_AWAY_SUBQUERIES

subconsulta otimizada

Subconsulta completamente removida após a otimização de reescrita da consulta, como no pushdown de subconsulta constante. Não aparece no plano de execução final.

QUERY_SPECIFICATIONS

estrutura de especificação de consulta

Unidade semântica completa que descreve os elementos sintáticos de uma consulta, incluindo a lista SELECT, a cláusula FROM e as condições de filtro.

SELECT_LIST_SUBQUERIES

subconsulta de lista de seleção

Subconsulta escalar presente nas colunas de projeção (lista de campos SELECT). Deve retornar um único valor escalar para cada iteração.

INDEX_SCAN

varredura de índice

Padrão de acesso a dados que utiliza índice B+ tree. As varreduras podem ser diretas ou reversas e podem envolver buscas em tabelas.

TABLE_SCAN

varredura completa de tabela

Método de acesso em que o otimizador percorre todas as páginas do índice clusterizado. Ocorre quando não há índice adequado disponível ou quando a proporção de dados a acessar ultrapassa um limiar. O desempenho degrada conforme o volume de dados aumenta.

ORDERING_OPERATION

ordenação de conjunto de resultados

Operação ORDER BY que classifica o conjunto de resultados usando algoritmo de ordenação explícito, como filesort. Pode utilizar memória ou arquivos temporários em disco.

NESTED_LOOP

junção por loop aninhado

Implementação mais básica de algoritmo de junção de tabelas. Para cada linha da tabela externa, itera pelas linhas correspondentes na tabela interna. É eficiente quando o predicado de junção fornece filtragem eficaz.

DUPLICATES_REMOVAL

deduplicação de resultados

Operação que implementa a semântica DISTINCT. A implementação subjacente pode usar índice exclusivo em tabela temporária ou ordenar e depois filtrar os resultados. O custo depende das características de distribuição dos dados.

WINDOWING_OPERATION

cálculo de função de janela

Cálculo de função analítica (como ROW_NUMBER ou RANK) realizado em janela de dados definida por cláusula OVER(). Pode exigir a ordenação de todo o conjunto de dados.

TABLE

referência de tabela base

Objeto de armazenamento físico acessado diretamente no plano de execução. Contém informações como nome da tabela, alias e método de acesso (por exemplo, const, system ou range).

Otimizar SQL pela página Instance Sessions

Importante

Instâncias MySQL autogerenciadas, MongoDB e RDS for PostgreSQL não oferecem suporte à otimização de SQL na página Instance Sessions.

  1. Faça login no console do DAS.

  2. No painel de navegação à esquerda, clique em Intelligent O&M Center > Instance Monitoring.

  3. Localize a instância de destino e clique em no ID da instância para abrir a página de detalhes.

  4. No painel de navegação à esquerda, clique em Instance Sessions.

  5. Na área Instance Sessions, selecione a sessão a otimizar e clique em Optimize.

  6. Na caixa de diálogo SQL Diagnostic Optimization exibida, visualize os resultados do diagnóstico de SQL.

    Para aceitar a sugestão, clique em Copy no canto superior direito e cole o SQL otimizado no cliente de banco de dados ou no DMS para execução. Caso contrário, clique em Cancel para fechar a caixa de diálogo.

    Nota

    O DAS diagnostica instruções SQL com base na complexidade, no volume de dados da tabela e na carga do banco de dados. Um diagnóstico pode levar mais de 20 segundos. Em seguida, o mecanismo fornece resultados de diagnóstico, sugestões de otimização e estimativas de ganho de desempenho para análise e adoção.

    Após a conclusão do diagnóstico, a página exibe o SQL original, o plano de execução (incluindo colunas como select_type, type e rows), os resultados do diagnóstico (incluindo instruções DDL para sugestões de índices row-store e detalhes dos índices), benefícios da otimização (por exemplo, "Expected performance improvement: 0,55x" e "Low optimization gains") e sugestões de otimização de instruções.

Visualize histórico de diagnósticos de SQL

  1. Faça login no console do DAS.

  2. No painel de navegação à esquerda, clique em Intelligent O&M Center > Instance Monitoring.

  3. Localize a instância de destino e clique em no ID da instância para abrir a página de detalhes.

  4. No painel de navegação à esquerda, clique em Request Diagnostic History para visualizar o histórico de diagnósticos de SQL da instância. Esta página inclui detalhes como conteúdo do SQL, status do diagnóstico, horário e resultados.