В сегодняшней публикации мы попробуем разобраться в производительности популярных MPP-движков в специализированной задаче ХД – предоставлении доступа к денормализованной витрине данных. Также ответим на вопрос: нужен ли ClickHouse в аналитическом ландшафте, спроектированном по принципу Lakehouse-платформ? Для этого будем использовать бенчмарк ClickBench.

ClickBench появился не так давно, в 2022 году. Методика создана и поддерживается командой ClickHouse. Авторы позиционируют его следующим образом - «Этот бенчмарк представляет типичную рабочую нагрузку в следующих областях: анализ потоков кликов и трафика, веб-аналитика, машинно-генерируемые данные, структурированные журналы и данные о событиях. Он охватывает типичные запросы в ad-hoc аналитике и дашбордах реального времени». Последний сценарий вызывает у нас особый интерес, ведь редко встретишь архитектурный дизайн аналитического ландшафта, где не было бы решения на базе ClickHouse именно для этой цели, на вершине пирамиды тракта данных от источника до потребителя.
О методике
Бенчмарк включает:
Набор данных, содержащий плоскую таблицу (да, именно одну табл��цу) ровно с 99 997 497 записями;
43 SQL-запроса, охватывающие ряд сценариев использования аналитики в рамках чтения одной таблицы (запускаются последовательно);
В последнее время мне часто попадаются сравнительные тестирования по данной методике, особенно в различных маркетинговых материалах. ClickBench стал очень популярным, как мне кажется, благодаря своей простоте и скорости получения результатов. Лично мне методика не нравится, о чем упоминал в ранних публикациях, из-за:
Своей узкой специализированности аналитики над одной таблицей без JOIN-операций (по мнению авторов «типичные запросы в ad-hoc аналитике и дашбордах реального времени» именно такие);
Отсутствия конкурентной нагрузки.
Но стадарт есть стандарт, и давайте будем его придерживаться.
Тестовое окружение
Все тесты выполняются в Яндекс.Облаке;
Данные размещены в Managed S3 хранилище;
Формат данных parquet ZSTD Compression level 3, структура DDL полностью соответствуют методике теста;
4 worker-узла, 32 vCores – каждый, и 320 Gb памяти для каждого движка;
ClickHouse в режиме работы над S3 использовал те же типы worker’ов.
Для теста ClickHouse c локальными дисками:
4 узла;
32 vCores 320 Gb RAM;
1 Tb SSD-диск (самая быстрая дисковая подсистема в Яндекс.Облаке);
Формат данных MergreTree cо сжатием LZ4;
4 distributed шарда по ключу WatchID.
Базовые версии движков:
ClickHouse 25.11.1.558;
Data Ocean Nova 2025.07:
StarRocks core 3.5.5;
Impala core 4.5;
Trino core 476.
Результаты
Результаты в табличном виде в разрезе каждого запроса и движка
Движок / Запрос | ClickHouse (over S3), сек | ClickHouse (MergeTree), сек | StarRocks, 2025.7.0, 3.5.5 сек | Impala, 2025.7.0, 4.5.0, сек | Trino, 2025.7.0, 476 сек |
Query0 | 0.149 | 0.01 | 0.041 | 0.072 | 0.314 |
Query1 | 0.323 | 0.015 | 0.039 | 0.110 | 0.940 |
Query2 | 0.373 | 0.02 | 0.055 | 0.143 | 0.524 |
Query3 | 0.501 | 0.024 | 0.057 | 0.141 | 0.658 |
Query4 | 0.727 | 0.092 | 0.177 | 0.508 | 1.368 |
Query5 | 0.958 | 0.126 | 0.298 | 0.753 | 1.925 |
Query6 | 0.425 | 0.021 | 0.037 | 0.072 | 0.306 |
Query7 | 0.22 | 0.017 | 0.050 | 0.198 | 0.600 |
Query8 | 1.089 | 0.134 | 0.436 | 0.687 | 1.798 |
Query9 | 1.616 | 0.152 | 0.893 | 1.003 | 2.898 |
Query10 | 1.602 | 0.054 | 0.274 | 0.322 | 1.430 |
Query11 | 1.17 | 0.058 | 0.285 | 0.327 | 1.092 |
Query12 | 0.94 | 0.123 | 0.307 | 0.760 | 2.000 |
Query13 | 2.354 | 0.178 | 0.440 | 1.662 | 3.563 |
Query14 | 0.924 | 0.128 | 0.345 | 0.789 | 2.114 |
Query15 | 0.786 | 0.092 | 0.215 | 0.636 | 1.659 |
Query16 | 1.847 | 0.294 | 0.635 | 1.062 | 2.857 |
Query17 | 1.317 | 0.222 | 0.561 | 1.063 | 3.567 |
Query18 | 3.008 | 0.507 | 0.699 | 1.723 | 4.513 |
Query19 | 0.992 | 0.014 | 0.030 | 0.161 | 0.496 |
Query20 | 2.859 | 0.149 | 0.441 | 0.580 | 3.365 |
Query21 | 3.143 | 0.139 | 0.462 | 0.677 | 2.825 |
Query22 | 5.955 | 0.202 | 1.034 | 1.059 | 4.587 |
Query23 | 16.218 | 0.448 | 3.557 | 2.287 | 12.068 |
Query24 | 1.631 | 0.071 | 0.130 | 0.192 | 1.502 |
Query25 | 0.825 | 0.06 | 0.114 | 0.193 | 0.800 |
Query26 | 1.048 | 0.078 | 0.130 | 0.191 | 1.446 |
Query27 | 2.906 | 0.177 | 0.437 | 0.470 | 2.982 |
Query28 | 4.227 | 1.316 | 4.762 | 3.078 | 6.682 |
Query29 | 0.487 | 0.178 | 0.071 | 0.451 | 3.192 |
Query30 | 1.513 | 0.113 | 0.263 | 0.605 | 1.637 |
Query31 | 2.401 | 0.195 | 0.366 | 0.763 | 2.802 |
Query32 | 7.109 | 0.611 | 1.360 | 2.325 | 4.702 |
Query33 | 5.055 | 0.497 | 1.664 | 2.184 | 7.176 |
Query34 | 5.322 | 0.516 | 1.662 | 2.079 | 6.847 |
Query35 | 0.514 | 0.082 | 0.162 | 0.688 | 2.032 |
Query36 | 0.631 | 0.045 | 0.048 | 0.378 | 1.975 |
Query37 | 0.652 | 0.03 | 0.048 | 0.208 | 1.260 |
Query38 | 0.591 | 0.033 | 0.043 | 0.208 | 1.036 |
Query39 | 1.05 | 0.111 | 0.045 | 0.617 | 2.378 |
Query40 | 0.374 | 0.023 | 0.053 | 0.186 | 0.849 |
Query41 | 0.402 | 0.019 | 0.114 | 0.168 | 0.705 |
Query42 | 0.464 | 0.018 | 0.043 | 0.152 | 0.672 |
Общее время, сек | 86.698 | 7.392 | 22.882 | 31.923 | 108.137 |
Посмотрим на агрегированные результаты на диаграмме

Нам показалось, что 100 млн записей в витрине данных – это мало. Мы решили усложнить себе задачу, так как всегда ориентированы на действительно большие данные, а не на «тест на калькуляторах», и провести еще две итерации с увеличенным объемом датасета в 50 и 100 раз, а только потом переходить к выводам. Зря мы что ли аж 4 worker-узла поднимали?
Оригинальный dataset был размножен достаточно примитивным способом – через insert-операцию оригинального датасета, но с генерацией уникальных ключей. После получения целевого объема датасета над витриной проводилась финальная операция перезаписи через Insert table overwrite as select.. Для каждого процессингового движка после этого собиралась статистика:
В итерации х50 получилось 4 999 874 850 строк (~5 млрд);
Для х100 – 9 999 749 700 строк (~10 мрд).
Давайте оценим, как объем повлиял на результаты.
Движок/ Размер набора данных | ClickHouse (over S3), сек x50 | ClickHouse (local disk), сек x50 | StarRocks, 2025.7.0, 3.5.5, сек x50 | Impala, 2025.7.0, 4.5.0, сек x50 | Trino, 2025.7.0, 476, сек x50 |
x50 | 10357 | 731 | 567 | 604 | 3223 |
x100 | 15733 | 1033 | 1109 | 1100 | 4574 |
Выведем результаты на диаграмму, но для удобства масштабирования исключим аутсайдера (ClickHouse, работающий над S3-датасетом).

С детализацией запросов для объема данных x50 и x100 можно ознакомиться в приложении в конце статьи.
Выводы
Концепция Lakehouse декларирует, что все задачи аналитического ландшафта данных можно решить из одной коробки и нет необходимости использовать для этого стороннюю систему. Так ли это? Давайте проанализируем результаты:
В подавляющем большинстве случаев при использовании современных BI-движков поверх объектного хранилища данных можно получить время отклика, сопоставимое (а часто и лучше) с временем отклика «короля bi-запросов» – ClickHouse, который использует свой внутренний формат хранения на локальной дисковой подсистеме. При этом важно помнить, что в данном тесте мы играли по правилам, придуманным ClickHouse на его, если можно так сказать, домашнем поле. Очевидно, что если правила нарушить и разбавить нагрузку запросами, содержащими JOIN-операции, то ClickHouse такие сценарии просто провалит;
Trino как вычислительная технология для быстрого доступа к денормализованной витрине данных пока выглядит наименее привлекательным среди представленных в тесте движков;
Использование S3 c ClickHouse все еще сопряжено с большими проблемами. Прежде всего, связанными с тем, что в S3 отсутствует привычное для ClickHouse шардирование. Открытые форматы данных требуют от разраб��тчиков изменить подход к работе движка, на что требуется значительное время (чем собственно команда ClickHouse и занимается).
Данные выводы не отменяют того факта, что ClickHouse с локальным хранением – чемпион в сценарии доступа к денормализованным данным. Однако наличие отдельно стоящего ClickHouse рядом с Lakehouse-платформой, предлагающей в качестве вычислительных технологий StarRocks или Impala, показывающих превосходный результат над S3 в данной задаче, может быть экономически и функционально не оправдано. К тому же доступность данных в витрине будет хуже, так как на перекладывание данных из S3 в ClickHouse потребуется дополнительное время и ресурсы. Да и сценарии применения ограничены из-за отсутствия нормально работающих JOIN-операций.
Данное утверждение справедливо не только для сочетания Lakehouse+ClickHousе, но и для ставшей привычной на нашем рынке связки GreenPlum+ClickHouse. Такая парадигма существовала только потому, что первая система плохо справлялась с задачами второй и наоборот. Все это привело к ухудшению доступности сервисов и увеличению общей стоимости владения.
И последнее. Если Lakehouse-платформа данных представлена только одним Trino, и вам необходим BI-доступ к плоской витрине с минимальным откликом, то избежать подселения в зоопарк дополнительной технологии пока не представляется возможным.
Не будет лишним еще раз напомнить: выбирать Lakehouse-движок для сценариев общего применения на основании только результатов ClickBench – ошибка, так как тест имеет исключительно узкоспециализированную направленность. Держите эту мысль всегда в голове, когда изучаете маркетинговые материалы. Требуются комбинированный подход и сочетание проверочных методик тестирования.
Заключение
Мы собираемся продолжать делиться результатами функциональных и нагрузочных испытаний популярных технологий вычислений. Несмотря на то, что мы публикуем только результаты движков, используемых в платформе Data Ocean Nova с учетом доработок и изменений, мы также уделяем внимание и другим популярным MPP-технологиям, например, Doris. Однако воздерживаемся пока от публикаций и ожидаем, что другие игроки на российском рынке Big Data, разрабатывающие и предлагающие платформы данных и обладающие большой экспертизой, насмотренностью и опытом, поделятся с сообществом своими результатами.
Если у вас есть идеи, как можно разбавить ClickBench для получения более реалистичных сценариев работы (например, добавить конкурентности или расширить список запросов, среди которых будет доступ по ключу), то напишите нам, пожалуйста, в комментарии через телеграм-канал Data Sapience. Мы всегда открыты к диалогу.
Предыдущие материалы по теме нагрузочных тестирований (в порядке публикации):
Тестирование систем и движков массивно-параллельных вычислений. Сравнение Impala, Trino и GreenPlum;
Тестирование систем и движков массивно-параллельных вычислений. Часть II. TPC-DS;
Бенчмарк бенчмарка Lakehouse-движков, в котором побеждает объективная реальность.
Приложение. Детализация времени работы запросов на увеличенном объеме данных

