DuckDB 2.0's Speed Gains, Explained
Original: Why DuckDB 2.0 is faster
Why This Matters
Faster S3 reads with no query changes lowers the cost of cloud-based analytics workloads.
DuckDB 2.0 alpha cuts S3 query time from 18.8s to 7.7s on a 2.2GB Parquet file (228M rows) via async I/O, per MotherDuck engineer Mehdi Ouazza testing on an M5 laptop against AWS us-east-1.
MotherDuck engineer Mehdi Ouazza ran DuckDB 2.0 alpha benchmarks on a 2.2 GB Parquet file (Stack Overflow votes, 228 million rows, 2,268 row groups) hosted on S3. The headline result: the same GROUP BY query dropped from 18.8 seconds on DuckDB 1.5.5 to 7.7 seconds on 2.0 alpha — a 2.4x speedup with zero query changes.
The key driver is async I/O. In 1.5.5, each of 18 workers alternates between downloading a row group and decoding it, leaving the CPU idle during network waits and the network idle during CPU work. DuckDB 2.0 splits these into separate thread pools: dedicated download threads keep dozens of row groups in flight simultaneously, while worker threads decode from a pre-filled buffer. Network and CPU stay busy in parallel.
Ouazza notes the raw numbers are slower than cloud-to-cloud scenarios because both runs went over home internet to us-east-1, affecting both versions equally. He also flags two additional 2.0 features — improved data modeling and pipeline changes — and some undocumented commits worth watching. DuckDB 2.0 is scheduled for release this fall.