Files
nis2/project-tasks/p12-b-clickhouse-vectorized-pipeline.md
T
2026-09-06 19:26:12 +03:00

4.8 KiB
Raw Blame History

P12-B. ClickHouse: векторизованный конвейер

  • Версия и дата проверки: 1.0, 05.09.2026.
  • Статус: готово к назначению.

Статья и исходные материалы

  • Основная статья: Robert Schulze и соавт. — ClickHouse — Lightning Fast Analytics for Everyone. VLDB 2024.
  • Кратко о статье: Статья описывает архитектуру ClickHouse — столбцовой аналитической СУБД, которая обрабатывает данные блоками и строит параллельный конвейер операторов. Блочная обработка уменьшает накладные расходы на отдельную строку и лучше использует процессор, память и сжатое представление столбцов. В этом проекте исследуется вклад блочной векторизации и выбор размера блока.
  • Почему результат актуален: статья описывает устройство открытой аналитической СУБД ClickHouse: столбцовое хранение, фоновые слияния частей, векторизованный конвейер исполнения запросов и отсечение ненужных данных.
  • Артефакты и данные: ClickHouse/ClickHouse под Apache-2.0 и ClickHouse/ClickBench с воспроизводимой аналитической нагрузкой и конфигурациями разных СУБД. Зафиксированные ревизии: ClickHouse/ClickHouse@2da63c1b42ca (Apache-2.0); ClickHouse/ClickBench@fa52f8524ad9 (CC BY-NC-SA 4.0; лицензии отдельных входных наборов проверяются отдельно).

Обязательный результат

  • Проверяемый вопрос или утверждение: Блочная обработка столбцов уменьшает накладные расходы на строку, но выигрыш зависит от селективности, сложности выражения и размера блока.
  • Технический результат: Реализовать эквивалентные row-at-a-time и блочный конвейеры scanfilterprojectaggregate над одним столбцовым набором данных. Проверять результаты обоих вариантов по эталонному запросу ClickHouse.
  • Эксперимент: Варьировать размер блока, селективность и вычислительную стоимость выражения. Сравнить построчный baseline и блочный конвейер по времени, throughput, CPU, аллокациям и памяти после прогрева минимум в трёх сериях; отдельно сопоставить тренд с профилем эквивалентного запроса ClickHouse.
  • Границы выводов: сравнение относится к самостоятельно реализованному конвейеру и выбранному профилю ClickHouse; оно не измеряет вклад векторизации внутри полного движка и не подтверждает производительность распределённых запросов.
  • Ресурсный профиль: локально, CPU, 8–16 ГБ памяти, готовый бинарный выпуск или контейнер. Полный ClickBench не требуется: объём данных и набор запросов сокращаются с проверкой того, что выбранные режимы остаются различимы.

Содержательные направления

  • эталон и генератор данных.
  • два исполнительных конвейера и проверка эквивалентности.
  • профилирование, серии параметров и анализ границы выигрыша.

Возможное продолжение

Добавить сжатие, строковые операции, многопоточность, векторизацию SIMD или исследовать режим, где большой блок ухудшает локальность и задержку.