Ликбез

Векторизованный механизм выполнения в StarRocks

2025-10-20 15:54 Starrocks
Векторизованный SQL-движок — это современная архитектура базы данных, которая обрабатывает данные не построчно, а целыми наборами (векторами), что значительно повышает производительность обработки запросов. StarRocks применяет векторизованный движок при исполнении запросов.

Его основные принципы работы:

  1. Пакетная обработка данных (строк) — вместо обработки каждой строки по отдельности, движок обрабатывает сразу множество строк как единый вектор данных.
  2. Применение SIMD-инструкций — использование современных возможностей процессоров для параллельной обработки данных.

Векторизированный механизм позволяет существенно сократить количество циклических выборок данных при обработке больших наборов данных.

Преимущества векторизированного движка:
  • высокая производительность – такой движок значительно ускоряет выполнение запросов;
  • эффективное использование ресурсов — оптимальное использование CPU и памяти за счет оптимизированного кэша. Данные хранятся в памяти компактно, это позволяет эффективнее использовать кэш центрального процессора (CPU);
  • высокая масштабируемость — способность обрабатывать большие объемы данных;
  • снижение нагрузки — уменьшение количества обращений к памяти.

При обработке таблицы со 100 млн строк традиционный движок потребует 100 млн вызовов функций. Векторизированный движок при размере вектора 1024 строки выполнит всего около 97 тыс. вызовов.

Технические особенности реализации векторизированного механизма выполнения:
  • векторизированное хранение — данные организованы в микроблоки (обычно 64 КБ) с колончатым хранением;
  • управление памятью — данные хранятся в фреймах данных размером до 2 МБ;
  • оптимизация фильтров — использование битовых карт для эффективной фильтрации данных;
  • перепроектирование операторов — все операции запроса адаптированы под векторную обработку.

Векторизированный движок особенно эффективен для:
  • OLAP-запросов;
  • сложных аналитических операций;
  • обработки больших наборов данных;
  • операций соединения (join) и агрегаций (group by).