Files

32 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

2026-09-06 19:26:12 +03:00
# P12-B. ClickHouse: векторизованный конвейер
2026-09-07 21:46:04 +03:00
- **Версия и дата проверки:** 1.1, 07.09.2026.
2026-09-06 19:26:12 +03:00
- **Статус:** готово к назначению.
## Статья и исходные материалы
- **Основная статья:** Robert Schulze и соавт. — [ClickHouse — Lightning Fast Analytics for Everyone](https://www.vldb.org/pvldb/vol17/p3731-schulze.pdf). VLDB 2024.
- **Кратко о статье:** Статья описывает архитектуру ClickHouse — столбцовой аналитической СУБД, которая обрабатывает данные блоками и строит параллельный конвейер операторов. Блочная обработка уменьшает накладные расходы на отдельную строку и лучше использует процессор, память и сжатое представление столбцов. В этом проекте исследуется вклад блочной векторизации и выбор размера блока.
- **Почему результат актуален:** статья описывает устройство открытой аналитической СУБД ClickHouse: столбцовое хранение, фоновые слияния частей, векторизованный конвейер исполнения запросов и отсечение ненужных данных.
- **Артефакты и данные:** [ClickHouse/ClickHouse](https://github.com/ClickHouse/ClickHouse) под Apache-2.0 и [ClickHouse/ClickBench](https://github.com/ClickHouse/ClickBench) с воспроизводимой аналитической нагрузкой и конфигурациями разных СУБД. Зафиксированные ревизии: `ClickHouse/ClickHouse@2da63c1b42ca` (Apache-2.0); `ClickHouse/ClickBench@fa52f8524ad9` (CC BY-NC-SA 4.0; лицензии отдельных входных наборов проверяются отдельно).
2026-09-07 21:46:04 +03:00
- **Что уже предоставляет артефакт:** ClickHouse и ClickBench дают данные, запросы, исполняемый движок и измерительные примеры. Они используются как источник входов и эталон результата и трендов.
2026-09-06 19:26:12 +03:00
## Обязательный результат
- **Проверяемый вопрос или утверждение:** Блочная обработка столбцов уменьшает накладные расходы на строку, но выигрыш зависит от селективности, сложности выражения и размера блока.
- **Технический результат:** Реализовать эквивалентные row-at-a-time и блочный конвейеры scanfilterprojectaggregate над одним столбцовым набором данных. Проверять результаты обоих вариантов по эталонному запросу ClickHouse.
2026-09-07 21:46:04 +03:00
- **Обязательное приращение команды:** Самостоятельно реализовать предусмотренные построчный и блочный конвейеры scanfilterprojectaggregate. Создать общий запуск, проверку эквивалентности и измерения при изменении размера блока, селективности и стоимости выражения; ClickHouse остаётся внешним эталоном.
2026-09-06 19:26:12 +03:00
- **Эксперимент:** Варьировать размер блока, селективность и вычислительную стоимость выражения. Сравнить построчный baseline и блочный конвейер по времени, throughput, CPU, аллокациям и памяти после прогрева минимум в трёх сериях; отдельно сопоставить тренд с профилем эквивалентного запроса ClickHouse.
- **Границы выводов:** сравнение относится к самостоятельно реализованному конвейеру и выбранному профилю ClickHouse; оно не измеряет вклад векторизации внутри полного движка и не подтверждает производительность распределённых запросов.
- **Ресурсный профиль:** локально, CPU, 8–16 ГБ памяти, готовый бинарный выпуск или контейнер. Полный ClickBench не требуется: объём данных и набор запросов сокращаются с проверкой того, что выбранные режимы остаются различимы.
## Содержательные направления
- эталон и генератор данных.
- два исполнительных конвейера и проверка эквивалентности.
- профилирование, серии параметров и анализ границы выигрыша.
## Возможное продолжение
Добавить сжатие, строковые операции, многопоточность, векторизацию SIMD или исследовать режим, где большой блок ухудшает локальность и задержку.