Visão Geral
Este Curso Explain Plan for Greenplum é focado em capacitar profissionais de banco de dados e engenheiros de performance a dominar a leitura e a interpretação do EXPLAIN PLAN no ambiente de data warehouse distribuído Greenplum. O curso cobre desde os fundamentos da arquitetura MPP (Massively Parallel Processing) do Greenplum até a análise detalhada de operadores complexos, ajudando o aluno a identificar gargalos, otimizar consultas SQL e, consequentemente, melhorar a performance geral do sistema.
Conteúdo Programatico
Módulo 1: Fundamentos da Otimização no Greenplum
1.1 Visão Geral da Arquitetura Greenplum:
- Conceito de MPP (Massively Parallel Processing).
- Componentes: Master Segment, Segment Instances e Interconnect.
- Como o Query Optimizer gera planos de execução paralela.
1.2 Introdução ao EXPLAIN PLAN:
- O que é o EXPLAIN PLAN e como ele difere do PostgreSQL padrão.
- Entendendo a saída: Hierarquia, operadores e ordem de leitura.
- Diferença crucial entre EXPLAIN e EXPLAIN ANALYZE.
1.3 Coleta de Estatísticas (VACUUM e ANALYZE):
- A importância da função ANALYZE para a precisão do plano.
- Melhores práticas para manter as estatísticas atualizadas nas tabelas (e o impacto na otimização).
Módulo 2: Leitura e Interpretação dos Operadores de Execução
2.1 Operadores de Acesso a Dados:
- Seq Scan (Sequential Scan): Quando é aceitável e quando é um problema.
- Index Scan e Bitmap Heap Scan: Como identificar a utilização de índices.
- Append, Table Function Scan e Subquery Scan.
2.2 Operadores de Junção (Joins):
- Nested Loop Join (NLJ): Cenários de uso (tabelas pequenas) e quando deve ser evitado.
- Hash Join: O join mais comum no Greenplum e como analisar seu custo.
- Merge Join: Quando ele aparece e suas vantagens/desvantagens.
2.3 Operadores de Modificação de Dados:
- Análise de Insert, Update e Delete no plano de execução.
- CTAS (Create Table As Select) e seu impacto na re-distribuição de dados.
Módulo 3: Otimização em Ambientes Distribuídos (MPP)
3.1 Os Operadores de Motion (Movimentação de Dados):
- O operador Redistribute: Identificando a movimentação dispendiosa de dados entre segments.
- O operador Broadcast: Quando uma tabela inteira é copiada para todos os segments e como otimizar.
- O operador Gather: Movendo dados de volta para o Master (custo de I/O de rede).
3.2 Estratégias de Distribuição de Tabela (Distribution Keys):
- Revisão de Hash Distributed (pela chave de distribuição) e Random Distributed.
- Como a escolha da Distribution Key impacta diretamente a necessidade dos operadores de Motion.
- Análise de EXPLAIN PLAN para confirmar a eficiência da Distribution Key.
3.3 O Problema do Data Skew (Desequilíbrio de Dados):
- Identificando o Data Skew pelo resultado do EXPLAIN ANALYZE (tempo de execução desigual entre segments).
- Estratégias de mitigação (skew-handling) e reavaliação da Distribution Key.
Módulo 4: Análise Avançada e Ferramentas de Tuning
4.1 Interpretação do EXPLAIN ANALYZE:
- Detalhamento das métricas: Time, Rows, Workers, Peak Memory.
- Identificando o tempo de espera (Wait Time) e os bottlenecks reais.
- Análise de Slice Information (fatias de execução paralela).
4.2 Otimização de Agregação e Window Functions:
- Análise de operadores Group By e Sort no plano.
- Otimização de Window Functions (Ex: Row Number, Lag) em ambiente distribuído.
4.3 Otimização Baseada em Particionamento e Storage
- Como a estratégia de Particionamento reduz o tempo de Scan (poda de partição).
- Análise do EXPLAIN PLAN em tabelas com Columnar Storage vs. Row Storage.
4.4 Uso de Hints e Parâmetros de Sessão:
- Quando e como usar Optimizer Hints (Ex: forçar um tipo de Join).
- Parâmetros de sessão que influenciam o plano (Ex: optimizer GPORCA vs. Legacy).
4.5 Estudo de Caso Prático:
-
Otimização de uma consulta SQL complexa de ponta a ponta: identificar o problema no EXPLAIN ANALYZE, alterar a Distribution Key ou criar um índice, e provar a melhoria na performance.