BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Apache Doris для Data Engineer » Vectorized Execution и другие техники ускорения

Vectorized Execution и другие техники ускорения

В рамках курса «Apache Doris для Data Engineer: загрузка данных, моделирование таблиц, оптимизация аналитических запросов и построение real time витрин данных» тема векторизованного исполнения охватывает фундаментальные принципы и современные техники ускорения выполнения запросов. Векторизация в Doris реализуется через обработку данных пакетами столбцов, применение SIMD-операций и динамическую кодогенерацию для выражений, что позволяет существенно снизить цикл обработки и повысить пропускную способность аналитических запросов. В данной главе рассматриваются архитектурные принципы, алгоритмы операторов, интеграционные аспекты и практические настройки для получения максимальной отдачи в сценариях загрузки данных, моделирования схем и построения real-time витрин.

Векторизованное выполнение в Doris строится на нескольких взаимосвязанных идеях: работа с колоннарной памятью, пакетная обработка данных (batch-based processing), тесная связка между сканированием данных и последующей обработкой через конвейер операторов, а также применение динамической кодогенерации для ускорения вычислений выражений на лету. Современные процессоры предоставляют широкие возможности SIMD, которые Doris использует для ускорения арифметических, логических операций и вычисления агрегатов на больших объемах данных. В сочетании с поздней материализацией (late materialization), предикат-пушдом на ранних этапах конвейера и детерминированной стратегией распределения памяти, это приводит к существенному снижению времени выполнения и более предсказуемым задержкам в реальном времени.

  • Ключевые концепции векторизованного исполнения: колоннарная организация данных, пакетная обработка, конвейерная маршрутизация операторов, локальность данных и использование SIMD.
  • Архитектура Doris и роль vectorized engine: от скана до агрегаций и соединений с минимальной промежуточной материализацией.
  • Алгоритмы и реализация основных операторов: сканирование, фильтрация, проекция, агрегации и соединения векторизованным способом, а также кодогенерация выражений.
  • Практические настройки и наблюдаемость: как включать векторизацию, как измерять эффективность и как интегрировать с real-time витринами.

     

Концепции и принципы векторизованного исполнения

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

 

Основные принципы:

  • Колоннарная упаковка: хранение значений по каждому столбцу отдельно упрощает пропуск predicate-пушда и ускоряет агрегации, так как только нужные столбцы читаются и обрабатываются.
  • Батчи как единицы планирования: конвейер операторов работает над батчами, что стимулирует эффективную векторизацию и уменьшает накладные расходы на управление промежуточными структурами.
  • Локальность памяти и-cache-friendly обработка: последовательный доступ к данным в одном столбце минимизирует кросс-локальные загрузки, улучшает данные кэширования и снижает задержки памяти.
  • Диапазонная векторизация: SIMD-ускорение применяется для операций над элементами в векторе, что особенно заметно на выражениях, фильтрах и вычислениях агрегатов.
  • Late materialization: вычисления часто выполняются над колоночными представлениями данных без немедленной физической сборки всех полей в строковый буфер, что снижает расход памяти и ускоряет конвейеры.

Почему это важно для Doris: аналитические запросы часто работают с большими объемами столбцовых данных, где векторизация может дать порядковый выигрыш по времени выполнения и предсказуемости задержек, что критично для real-time витрин.

 

Архитектура Doris: от скана до агрегаций

Архитектура Doris для векторизованного исполнения строится вокруг интегрированного конвейера операторов, работающего на столбцовых структурах и батчах. Основные слои можно выделить так:

  • Сканирование и фильтрация: столбцовые сканеры читают только необходимые столбцы, применяют предикаты на этапе скана и формируют батчи для последующей обработки.
  • Проекция и выражения: выражения-арифметические и логические преобразования-вычисляются векторизованно над батчами. Здесь активно применяется кодогенерация для ускорения часто используемых выражений.
  • Агрегации и группировки: агрегаты реализованы так, чтобы работать над батчами, поддерживая позднюю материализацию, когда возможно, и используя локальные кэширования для ускорения повторяющихся вычислений.
  • Соединения: алгоритмы соединения в Doris адаптированы под векторизированное исполнение, с упором на эффективное использование памяти и параллелизма.
  • Планировщик и исполнитель: конвейер операторов формируется с учётом возможностей процессора, где каждый узел конвейера обрабатывает батч и передает его дальше без лишних преобразований.

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

 

Алгоритмы и реализации основных операторов

В Doris основные операторы становятся векторизованными элементами конвейера:

  • Сканирование и предикат-пушда: при чтении данных выбираются лишь те ряды, которые удовлетворяют условиям, на уровне батча. Это позволяет уменьшить объем загружаемых данных на следующих этапах.
  • Фильтрация: фильтрационные условия применяются ко всему батчу одними векторизованными инструкциями, что ускоряет отсеивание нерелевантных строк.
  • Проекция и арифметические выражения: вычисления выполняются над столбцами в батче. Здесь применяются оптимизации в виде уплотнения выражений, общих подвыражений и, при наличии, генерации кода, адаптированного под конкретную схему запросов.
  • Агрегации и группировки: операции группировки реализованы так, чтобы несколько ключей обрабатывались последовательно в рамках батча, а локальные частичные агрегации слиялись на этапе глобального объединения. Векторная обработка снижает стоимость вычисления функции агрегации над множеством строк.
  • Соединения: применяются векторизованные алгоритмы соединения, включая хеш-табличные методы, где обработка батчами позволяет повторно использовать кэш и минимизировать повторные обращения к памяти.
  • Late materialization: значительная часть вычислений и объединений может выполняться до того, как полностью материализованы все поля строк, что уменьшает требования к памяти и ускоряет цикл обработки.

Важно подчеркнуть, что такие операторы в Doris часто применяют совместимые техники: predicate pushdown, проектирование конвейера так, чтобы каждый батч мог двигаться без задержек между узлами, и использование SIMD-векторизации на каждом уровне.

 

Кодогенерация, SIMD и производительность

Одной из центральных технологий ускорения является динамическая кодогенерация выражений. Doris использует подход, при котором часто встречающиеся выражения и комбинации операций компилируются во время выполнения в нативный код под конкретную схему данных и типы столбцов. Это обеспечивает схему исполнения без интерпретации на каждом шаге и позволяет производить оптимизации на уровне конвейера, такие как:

  • Индексация регистров и упрощение вычислений для конкретных типов данных.
  • Встраивание предикатов и выражений прямо в цикл обработки батча, что уменьшает накладные расходы на вызовы функций и упрощает ветвления.
  • Адаптация к особенностям процессора: использование инструкций SIMD (например, AVX2/AVX-512) для параллельной обработки элементов вектора, выравнивание данных и предиктовая обработка векторных полей.

Cам по себе SIMD-инструкция может значительно повысить скорость выполнения для простых арифметических и логических операций, а также для вычисления агрегатов над столбцами. В более сложных выражениях кодогенерация уменьшает накладные расходы и позволяет Doris держать вычисления ближе к железу.

Вместе с тем следует помнить о компромиссах:

  • Включение кодогенерации может увеличить время подготовки плана, особенно для крайне динамичных запросов. В продакшене это обычно нивелируется за счет повторного использования плана и кэширования компилированного кода.
  • Избыточная генерация кода для редких случаев может привести к неравномерности задержек. Поэтому в реальных настройках применяются гибкие политики: кодогенерация включается по умолчанию, но может быть отключена для рабочих нагрузок с аномально высоким разнообразием выражений.

Наконец, совместная работа векторизации и кодогенерации обеспечивает быстреее выполнение связок операций: скана, фильтрации, проекции и агрегаций в рамках одного конвейера, снижая лишние переходы между уровнями абстракции и минимизируя обращения к памяти.

 

Практические настройки, мониторинг и интеграции

Настройки и практические принципы внедрения векторизованного исполнения в Doris должны опираться на конкретные требования нагрузки и инфраструктуры. Рекомендованный набор практик:

  • Включение векторизированного движка по умолчанию: для большинства аналитических нагрузок следует использовать векторизованный конвейер как базовую конфигурацию. При этом полезно иметь возможность временно отключать его для сравнения или диагностики на экспериментальных нагрузках.
  • Включение и настройка кодогенерации: активируйте JIT-генерацию выражений там, где запросы повторяются часто и содержат сложные вычисления. Контролируйте влияние на latency и cpu-usage в рамках мониторинга.
  • Оптимизация схемы для батчей: проектируйте схему так, чтобы столбцы, требуемые в большинстве выражений, хранились в компактной и упорядоченной форме; избегайте ненужной дубликации данных.
  • Мониторинг и метрики: ключевые показатели включают скорость обработки батчей (батчей в секунду), пропускную способность по столбцам, долю успешно применённых предикатов на скане, частоту ребилда плана кода и показатели использования CPU (SOC/AVX-метрики). Важно отслеживать не только средние значения, но и хвост задержек (tail latency) для real-time витрин.
  • Интеграция с real-time витринами: в потоковых сценариях векторизация снижает задержку между поступлением данных и их доступностью для аналитических запросов. Важно сочетать ingestion-пайплайны с конвейером Doris, чтобы данные попадали в хранилище в формате, удобном для пакетной обработки и минимизации повторной реконструкции данных.
  • совместимость с открытыми и локальными решениями: практики включают использование открытых инструментов для мониторинга производительности (например, сбор метрик на уровне ядра процесса) и внимательное отношение к интеграциям с системами потоковой передачи данных.

     

Key takeaways

  • Векторизованное исполнение в Doris базируется на пакетной обработке столбцов, что повышает SIMD-эффективность и кэш-эффективность.
  • Архитектура конвейера операторов от скана к агрегациям позволяет минимизировать промежуточную материализацию и ускорить выполнение за счет поздней материализации.
  • Кодогенерация выражений и адаптация под конкретные схемы данных значительно снижают накладные расходы и улучшают производительность на повторяемых запросах.
  • Важна балансировка между векторизацией и динамическим планированием: выбор стратегий в зависимости от типа нагрузки и требований к latency.
  • Настройки по умолчанию работают хорошо для большинства сценариев; для real-time витрин критично обеспечить мониторинг и возможность оперативной настройки на тяжелые пики загрузки.
  • Эффективность достигается через сочетание предикат-пушда, пакетной обработки и оптимизаций оператора, включая агрегации и соединения на векторизованных данных.
  • Интеграция с потоковыми ingestion-каналами требует совместимого формата хранения и минимизации переработки данных между стадиями загрузки и анализа.

     

FAQ

  1. Что делает векторизованное исполнение в Doris и чем оно отличается от традиционных подходов?
  • Векторизованное исполнение обрабатывает данные пакетами столбцов, применяя SIMD-инструкции к целым векторам значений. Это позволяет выполнять арифметику и фильтрацию над несколькими значениями за одну операцию, сокращая число инструкций и обращения к памяти. В отличие от строкового (row-based) подхода, где каждая строка обрабатывается последовательно, векторизация существенно улучшает пропускную способность и снижает задержки для аналитических запросов.

 

  1. Какие операторы наиболее чувствительны к векторизации и какие преимущества она приносит?
  • Основные операторы: сканирование, фильтрация, проекция, агрегации и соединения. Преимущества включают снижение количества проходов по данным, ускорение вычислений над столбцами, более эффективное использование кэша и снижение латентности в реальном времени через ускоренную обработку батчей.

 

  1. Как работает кодогенерация в Doris и когда она особенно эффективна?
  • Кодогенерация генерирует нативный код для часто встречающихся выражений и последовательностей операций на основе конкретной схемы и типов данных. Эффективна там, где выражения повторяются в разных запросах или внутри одного запроса, что позволяет убрать интерпретационные накладные расходы и оптимизировать доступ к памяти. При этом важно контролировать компромисс между временем компиляции и выигрышем в скорости выполнения.

 

  1. Какие настройки чаще всего влияют на производительность векторизованного исполнения?
  • Включение векторизированного движка по умолчанию, опции для включения/отключения кодогенерации выражений, параметры размера батча и настройки памяти под батчи. Для real-time нагрузок полезно иметь гибкую политику по масштабированию батчей и оперативной настройке предикат-пушда.

 

  1. Как векторизация взаимодействует с загрузкой данных и витринами в реальном времени?
  • Батчевое чтение столбцов минимизирует размер операций на каждом этапе. Предикаты применяются на этапе скана, что снижает объем данных, попадающих на последующие стадии. В реальном времени векторизация способствует снижению задержек от поступления данных до их доступности в витрине благодаря ускоренной обработке и снижению количества промежуточных материалов.

 

  1. Что такое late materialization и зачем она нужна в Doris?
  • Late materialization предусматривает выполнение вычислений и агрегаций на столбцах без немедленной сборки всех полей в строковую форму. Это уменьшает затраты памяти и ускоряет конвейеры, поскольку только необходимый набор полей materiaisуется в нужный момент, минимизируя переработку данных.

 

  1. Какие ограничения следует учитывать при внедрении векторизации?
  • В некоторых редких сценариях, особенно с сильно вариабельными выражениями или нестандартной схемой данных, эффект может быть ограничен. В таких случаях возможно потребуется временно отключать кодогенерацию или адаптировать батч-размер под конкретную нагрузку. Также следует внимательно следить за мониторингом, чтобы не перегружать процессор в пиковые периоды.

 

  1. Какие примеры интеграции с открытыми решениями полезны при работе с Doris?
  • В контексте векторизованного исполнения полезно рассмотреть интеграцию с открытыми инструментами мониторинга производительности и observability. В качестве конкурирующих решений можно упомянуть популярные аналитические СУБД с аналогичной архитектурой, например, ClickHouse, как пример сравнения подходов к векторизации и кодогенерации. В рамках российского рынка при необходимости можно опираться на локальные решения с открытым кодом, обеспечивающие совместимость с форматом данных и форматами обмена.

 

  1. Как измерять эффективность векторизованного исполнения?
  • Основные метрики: Throughput (батчи/с), RowsProcessed, BytesRead, CPUTime, Ceiling и tail latency, доля кода, сгенерированного на лету, и доля успешно применённых предикатов на этапе скана. Важно сравнивать производительность с аналогичными сценариями без векторизации и с отключенной кодогенерацией, чтобы увидеть реальный прирост.

 

  1. Какие шаги можно предпринять для внедрения векторизации в существующую инфраструктуру?
  • Начните с включения векторизированного движка и мониторинга его поведения под текущей нагрузкой. Затем проведите тестирование на реплике данных, сравните latency и throughput между режимами. При необходимости настройте размер батча и параметры кодогенерации, чтобы найти баланс между приготовлением к компиляции и реальным выигрышем в скорости. Внедряйте постепенное изменение на стадии загрузки данных и формирования витрины, внимательно следя за реакцией системы.

 

← Предыдущая статья
Оптимизация аналитических запросов: план выполнения, статистика, prune
Следующая статья →
Продвинутые техники агрегаций и материализованных представлений в Apache Doris

 

Узнать стоимость решенияЗапросить видео презентацию

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • «Лента» – первая по величине сеть гипермаркетов и четвертая среди крупнейших розничных сетей страны. Компания была основана в 1993 г. в Санкт-Петербурге.

    «Лента» управляет 249 гипермаркетами в 88 городах России и 131 супермаркетом в Москве, Санкт-Петербурге, Сибири, Уральском и Центральном регионах с общей торговой площадью около 1 494 тыс. кв. м. Средняя торговая площадь одного гипермаркета «Лента» составляет около 5 500 кв.м, средняя площадь супермаркета – 800 кв.м. Компания оперирует двенадцатью распределительными центрами. Штат компании – около 50, 5 тыс. человек.

  • Группа компаний «Невский кондитер» основана в 1996 году в Санкт-Петербурге и на сегодняшний день является одним из крупнейших производителей кондитерских изделий в России.

     

  • НПФ «Будущее» — один из крупнейших негосударственных пенсионных фондов России, предоставляющий услуги по пенсионному обеспечению и накоплениям. Фонд активно внедряет цифровые технологии для повышения качества обслуживания клиентов.

  • СберКорус (Группа компаний Сбербанка) – это ИТ‑компания, ИТ‑интегратор, SaaS-провайдер. Является разработчиком цифровых сервисов и услуг для автоматизации широкого диапазона бизнес-процессов юридических лиц. В 2004 году компания стала первым в России оператором электронного документооборота, а в 2012 году вошла в экосистему Сбера. 

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.