Database execution engines have undergone a fundamental transformation over the past decade. The traditional Volcano model, introduced in the 1990s, processes rows one at a time through a pull-based iterator pipeline. While elegant in design, this approach suffers from poor CPU cache utilization and high interpretation overhead. Modern vectorized execution engines address these limitations by processing batches of column-oriented data in tight loops, achieving order-of-magnitude performance improvements. This shift is central to the rise of high-performance analytical databases such as ClickHouse, DuckDB, and Apache Arrow-based systems. Key techniques include SIMD-friendly data layouts, batch-level operator fusion, and elimination of per-tuple function calls. For engineers building or tuning data infrastructure, understanding this evolution is critical for designing systems that can handle petabyte-scale analytics efficiently. The article provides a clear architectural comparison and practical insights into implementing vectorized execution without relying on proprietary code.
This article explores the evolution of database execution engines from the classic Volcano iterator model to vectorized columnar processing, explaining how batch processing of column data dramatically improves cache efficiency and reduces overhead. It provides a technical deep dive into the design principles behind modern analytical databases like ClickHouse and DuckDB, making it valuable for engineers optimizing query performance.