← На главную

QuestDB показала: ClickBench ненадежен — DuckDB обгоняет

23.06.2026 02:27 · hackernews

Бенчмарки баз данных похожи на странные интернет-соревнования: участники должны насвистывать Yellow Submarine, пока бегут стометровку. Победитель — не обязательно самый быстрый. Авторы статьи из QuestDB взяли известный бенчмарк ClickBench и показали, как легко в нём переставить места с помощью крошечных изменений методологии.

ClickBench гоняет 43 аналитических запроса по одной таблице с веб-аналитикой (100 млн строк, 105 столбцов). Все замеряют внутреннее время выполнения — запуск процесса в результат не входит. Но есть нюансы. Во-первых, «холодный» прогон (с очисткой кэшей) нельзя сделать на облачных сервисах вроде Snowflake или BigQuery, что даёт им фору. Во-вторых, количество «горячих» итераций — всего три, что мало для движков на JVM, где JIT-компилятор разогревается не сразу.

Эксперимент поставили на одной машине (AMD Ryzen 9 7900, 61 ГБ RAM). Сравнивали DuckDB, Polars, ClickHouse, DataFusion и Salesforce Hyper на внешнем Parquet-файле. В стандартной настройке лидируют DuckDB и Polars. Но стоило оставить процесс живым между запросами — и Hyper взлетел с последнего места на третье (2.17x быстрее). Внутри «горячего» замера пряталась компиляция и прогрев буферного пула, которые исчезли в долгоживущей сессии. DuckDB тоже ускорился (1.24x), потому что наконец заработал его parquet_metadata_cache.

Второй сценарий — нативное хранение. Там соревновались QuestDB, ClickHouse, DuckDB и CrateDB. В стандартном зачёте QuestDB на первом месте. Увеличили число горячих итераций с трёх до десяти, чтобы JVM-движки (QuestDB и CrateDB) успели разогреться. QuestDB ускорился на 13%, CrateDB — на 27%. AOT-скомпилированные ClickHouse и DuckDB (который всё ещё перезапускался) не изменились.

Финальный удар: оставили DuckDB живым и дали 10 итераций. Результат — DuckDB на 1.69x быстрее, и он вылетает на первое место, смещая QuestDB. Сама QuestDB не замедлилась, просто у DuckDB улучшился baseline, и относительный рейтинг всех остальных поплыл вверх.

Вывод: ни одному бенчмарку нельзя доверять полностью. Смена одного параметра (живой процесс или число прогонов) перетасовывает таблицу лидеров. Вместо веры в чужие замеры авторы советуют запускать собственные на своём железе и под свою нагрузку. Или хотя бы смотреть на несколько бенчмарков, а не на одну цифру. QuestDB продолжит участвовать в тестах, чтобы находить слабые места, но просит читать их результаты критично. Все эксперименты воспроизводимы: код и данные лежат в открытом репозитории clickbench-experiments.

Читать оригинал →