Compilar ou não compilar consultas de banco de dados: um mergulho profundo

2025-02-12

Este artigo explora as compensações de compilar consultas de banco de dados. Os interpretadores de consultas tradicionais lutam com a velocidade dos modernos SSDs NVMe, levando a gargalos significativos de desempenho. A compilação de consultas oferece melhorias substanciais de velocidade, especialmente para cargas de trabalho OLAP. No entanto, o tempo de compilação e os desafios de otimização criam penhascos de desempenho imprevisíveis. Os interpretadores vetorizados, inversamente, são mais fáceis de construir, depurar e oferecem desempenho mais consistente. O artigo contrasta isso com os mecanismos de navegador JavaScript/Wasm, que usam uma abordagem de compilação em camadas (interpretador, compilador de linha de base, compilador otimizante) para atingir um compromisso de desempenho suave. O autor propõe uma abordagem semelhante para bancos de dados, sugerindo um compilador de linha de base como um componente chave. Várias estratégias de implementação, incluindo 'copiar e colar' e compilação Wasm, são exploradas. Em última análise, o artigo argumenta que construir um compilador de linha de base não é proibitivamente difícil e oferece perspectivas sobre direções futuras.

Desenvolvimento otimização de consultas