Статья

Механизмы параллельного выполнения запросов

Технологии
Механизмы параллельного выполнения запросов в Data Lakehouse Селена

Параллельное выполнение запросов в Селене основано на архитектуре MPP (Массивно-параллельная обработка) и глубокой векторизации операций. Благодаря этому Селена эффективно масштабируется горизонтально, утилизирует вычислительные ресурсы CPU и обеспечивает высокую производительность аналитических запросов в реальном времени.

При поступлении запроса система разбивает его на логические фрагменты — части плана выполнения, отвечающие за сканирование, проекцию, соединение, сортировку и агрегацию. Каждый фрагмент преобразуется в физическую единицу выполнения, которая распределяется по вычислительным узлам (BE). Каждый узел BE обрабатывает свою часть данных параллельно, а результаты объединяются на более высоких уровнях плана.

Архитектура Селены использует колоночное хранение, векторизированный движок и механизм выполнения Operation on Encoded Data (OED), что позволяет выполнять вычисления непосредственно над сжатыми данными без декодирования, значительно снижая задержки и нагрузку на память.

Векторизация и обработка данных в Селене

Векторизация — ключевой элемент производительности Селены. Вместо построчной обработки система работает пакетами строк (векторами), что:

  • Снижает количество обращений к памяти
  • Повышает эффективность использования кеша CPU
  • Позволяет использовать SIMD-инструкции
  • Ускоряет выполнение операторов и выражений в несколько раз

Колоночное хранение усиливает эффект векторизации: данные, необходимые для одного оператора, располагаются компактно и считываются последовательно.

Operation on Encoded Data (OED)

Этот механизм позволяет Селене выполнять часть операций над сжатыми данными, не декодируя их.

Преимущества:

  • Существенное снижение объема данных, передаваемых между операторами
  • Уменьшение пропускной нагрузки на память
  • Ускорение фильтрации, агрегации и сортировки
  • Сокращение общего времени выполнения запроса

Таким образом, даже сложные аналитические запросы (OLAP) выполняются быстрее, чем в системах с традиционной схемой декодирования.

Ключевые различия Селены и Greenplum:

1) Архитектура обработки данных:

  • Селена использует MPP с колоночным хранением и векторизацией, что оптимизирует использование CPU и памяти
  • Greenplum основана на сегментированной архитектуре PostgreSQL с централизованным координатором

2) Управление данными:

  • В Селене данные распределяются по вычислительным узлам, а управление метаданными и планирование запросов выполняются фронтальными узлами (FE)
  • В Greenplum данные распределены по сегментам, а координатор управляет распределением нагрузки

3) Оптимизация запросов:

  • Селена применяет стоимостной оптимизатор (CBO) и материализованные представления для ускорения запросов
  • Greenplum использует планировщик GPORCA, который оптимизирует запросы, учитывая расположение данных и минимизируя передачу данных между сегментами

4) Параллелизм при JOIN и агрегациях:

  • Селена поддерживает различные алгоритмы соединений (Colocate Join для локальных соединений без пересылки данных) и оптимизирует агрегации
  • В Greenplum JOIN и агрегации могут требовать передачи данных между сегментами, что увеличивает накладные расходы

Селена более эффективна с точки зрения параллелизма, так как:

  • Векторизация и колоночное хранение позволяют Селене обрабатывать данные пакетами, сокращая количество обращений к памяти и повышая производительность
  • Operation on Encoded Data снижает накладные расходы на декодирование, ускоряя выполнение запросов
  • Гибкая система планирования и CBO обеспечивают более тонкую оптимизацию запросов, включая перераспределение нагрузки между узлами
  • Поддержка современных форматов хранения (Parquet, ORC) и интеграция с облачными хранилищами улучшают масштабируемость и доступность данных

В результате Селена лучше подходит для:

  • Интерактивной аналитики
  • Real-time запросов
  • Высоконагруженных аналитических систем
  • Гибридных BI-нагрузок

Когда Greenplum может быть эффективнее

Несмотря на преимущества Селены, Greenplum остаётся сильным решением в ряде сценариев:

  • Крупные периодические пакетные вычисления
  • Тяжелые запросы с множественными shuffle операций
  • Сценарии, где важна совместимость с PostgreSQL-экосистемой

Селена же ориентирована на низкую задержку, высокую производительность и интерактивные аналитические нагрузки.