DuckDB 2.0が速い理由を検証

原題: Why DuckDB 2.0 is faster

なぜ重要か

S3上の大規模Parquetファイルへのクエリを約6割高速化する変更は、クラウドデータパイプラインの運用コスト削減に直結し得る。

MotherDuckのエンジニアMehdi Ouazzaが、DuckDB 2.0 alphaのパフォーマンスをM5ラップトップ上で実測した。最大の目玉はAsync I/Oで、AWS S3上の2.2GB Parquetファイル(2億2800万行)を対象にしたクエリで、DuckDB 1.5.5の18.8秒に対しDuckDB 2.0 alphaは7.7秒を記録。処理時間を約59%短縮した。

DuckDB 2.0は2026年秋のリリースを予定しており、現在alphaが公開中だ。MotherDuckのMehdi Ouazzaは自身のM5ラップトップと自宅のインターネット回線を使い、3つの主要機能を実測した。

最も大きな改善はAsync I/Oだ。仕組みはシンプルで、旧バージョン1.5.5ではワーカースレッドがダウンロード→待機→デコードを逐次実行していたため、ダウンロード中はCPUが遊び、デコード中はネットワークが遊ぶという非効率が生じていた。同時進行するダウンロードも最大18件に制限されていた。

DuckDB 2.0では専用のダウンロードスレッドプールが数十のrow groupを並行してフライトインフライト状態に保ち、バッファにバイト列を積む。ワーカースレッドはデコードだけに専念し、常にrow groupが用意された状態になるため、ネットワークとCPUが同時に稼働する。

実測結果は、Stack Overflow投票データ(2268 row groups、対象カラムは4列中1列・約230MB)を対象にしたGROUP BY集計で、1.5.5の18.8秒に対し2.0 alphaは7.7秒。Ouazzaは「自宅回線からus-east-1へのアクセスのため両者とも遅め。クラウドコンピュートから実行すればさらに速くなる」と注記している。

クエリ自体の変更は不要であり、既存ユーザーはコードを書き換えることなく恩恵を受けられる点が特徴だ。記事ではAsync I/O以外にも2つの重要な機能変更と、コミットログから発掘したいくつかの隠れた改善点を紹介しているが、いずれも「データの形状とモデリングを理解することで初めて速度向上を実感できる」とOuazzaは強調している。

出典

motherduck.com — 元記事を読む →