Skip to main content
SQLOZ
Chapter 19 OzSuite™ AI & Advanced Tools

Capítulo 19: OzExplain - Execution Tree e Index Advisor

Informação: Este capítulo explica a conversão de saídas EXPLAIN suportadas em uma árvore visual de execução de consultas, alertas de divergência entre linhas estimadas e reais, e recomendações de índices. A disponibilidade varia conforme as sondagens de capacidades do servidor.

Neste capítulo:

19.1 Árvore de Execução Visual

Ao selecionar uma consulta de leitura e pressionar Cmd + E, o OzExplain decompõe o plano de execução EXPLAIN em nós visuais coloridos. Ambientes SQLite ou servidores que não suportam o formato solicitado exibem o estado apropriado de indisponibilidade.

  • Nós Vermelhos (Gargalos / Bottlenecks): Etapas ineficientes de alto custo, como varreduras completas de tabela (Full Table Scan / ALL), ordenação em disco (filesort) ou criação de tabelas temporárias em disco (using temporary).
  • Nós Verdes (Operações Otimizadas): Acessos indexados eficientes utilizando chave primária (const/eq_ref) ou índices B-Tree bem definidos.

Essa visualização permite identificar instantaneamente em qual operador do plano reside o maior custo da consulta.

19.2 Comparação de Linhas Estimadas vs Reais

Quando o servidor conectado suporta comandos de análise em tempo de execução, o OzExplain compara a estimativa estatística do otimizador com a contagem real de registros processados. No MySQL utiliza-se EXPLAIN ANALYZE; no MariaDB, o formato ANALYZE suportado. O SQLite não possui suporte a EXPLAIN ANALYZE.

Quando a divergência entre estimativa e execução real ultrapassa 3x, o nó emite o seguinte alerta:

ANALYZE TABLE orders; -- Linhas reais (450.000) excedem a estimativa (1.000) em 450x

Dica: Esse alerta indica estatísticas desatualizadas no catálogo do banco, sugerindo a execução imediata de ANALYZE TABLE para calibrar o otimizador.

19.3 Recomendações de Índices

Ao detectar uma varredura completa (ALL), o OzExplain sugere a estrutura de índice recomendada para a tabela:

CREATE INDEX idx_orders_opt ON orders (<colunas_filtro>);

Essa diretriz serve como modelo sintático inicial; o SQLOZ não infere de forma autônoma as colunas de predicado nessa visão. Avalie as colunas contra a carga de trabalho real e aplique as alterações via safety gate; índices nunca são criados sem autorização expressa.

Tópicos Relacionados