Avaliação preguiçosa
Exemplo: Preguiçoso vs Eager
Benefícios da Avaliação Preguiçosa
- Otimização de Consultas: várias operações são compiladas em uma única consulta SQL otimizada
- Pushdown de Filtros: os filtros são aplicados no nível da fonte de dados
- Poda de Colunas: apenas as colunas necessárias são lidas
- Decisões Adiadas: o mecanismo de execução pode ser escolhido em tempo de execução
- Inspeção do Plano: você pode visualizar e depurar a consulta antes de executá-la
Gatilhos de execução
Gatilhos automáticos
Exemplos:
Operações que permanecem preguiçosas
Exemplos:
Execução em três fases
Fase 1: Construção da consulta SQL (Preguiçoso)
Fase 2: Ponto de execução
Fase 3: Operações com DataFrame (se houver)
Visualizando planos de execução
explain() para ver o que será executado:
Query
Response
verbose=True para obter mais detalhes:
Armazenamento em cache
Como o cache funciona
Invalidação do cache
Controle manual do cache
Combinando operações de SQL e Pandas
Operações compatíveis com SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Operações em colunas (matemática, comparação, métodos de string)
Operações exclusivas do Pandas
apply()com funções personalizadaspivot_table()com agregações complexasstack(),unstack()- Operações em DataFrames já executados
Pipelines híbridos
Seleção do mecanismo de execução
Modo automático (padrão)
Forçar o mecanismo chDB
Forçar o mecanismo do pandas
Impactos no desempenho
Bom: aplique o filtro no início
Ruim: filtrar só no fim
Bom: selecione as colunas desde o início
Bom: deixe o SQL fazer o trabalho
Resumo das práticas recomendadas
- Encadeie as operações antes de executar - Monte a consulta completa e só então acione a execução uma vez
- Filtre o quanto antes - Reduza os dados na origem
- Selecione apenas as colunas necessárias - A eliminação de colunas melhora o desempenho
- Use
explain()para entender a execução - Depure antes de executar - Deixe o SQL cuidar das agregações - O ClickHouse é otimizado para isso
- Fique atento aos gatilhos de execução - Evite execuções antecipadas acidentais
- Use cache com critério - Entenda quando o cache é invalidado