Перейти к основному содержанию
Понимание модели отложенного вычисления DataStore — ключ к его эффективному использованию и оптимальной производительности.

Отложенное вычисление

DataStore использует отложенное вычисление — операции выполняются не сразу, а сохраняются и компилируются в оптимизированные SQL-запросы. Выполнение происходит только тогда, когда результаты действительно необходимы.

Пример: отложенное и немедленное вычисление

Преимущества отложенного вычисления

  1. Оптимизация запроса: Несколько операций объединяются в один оптимизированный SQL-запрос
  2. Pushdown фильтров: Фильтры применяются на уровне источника данных
  3. Исключение лишних столбцов: Считываются только нужные столбцы
  4. Отложенный выбор: Движок выполнения можно выбрать во время выполнения
  5. Просмотр плана: Перед выполнением можно просмотреть и отладить запрос

Триггеры выполнения

Выполнение автоматически запускается, когда требуются фактические значения:

Автоматические триггеры

Примеры:

Операции, которые остаются ленивыми

Примеры:

Трёхфазная модель выполнения

Операции DataStore выполняются по трёхфазной модели:

Фаза 1: Построение SQL-запроса (отложенное)

Накапливаются операции, которые можно выразить на SQL:

Фаза 2: Момент выполнения

Когда срабатывает триггер, выполняется накопленный SQL:

Этап 3: Операции с DataFrame (если есть)

Если после выполнения вы последовательно применяете операции только из pandas:

Просмотр планов выполнения

Используйте explain(), чтобы посмотреть, что именно будет выполнено:
Query
Response
Используйте verbose=True, чтобы получить более подробную информацию:
Полную документацию см. в разделе Отладка: explain().

Кэширование

DataStore кэширует результаты выполнения, чтобы избежать повторных запросов.

Как работает кэширование

Сброс кэша

Кэш сбрасывается, когда операции изменяют DataStore:

Ручное управление кэшем


Сочетание операций SQL и Pandas

DataStore интеллектуально обрабатывает операции, сочетающие SQL и pandas:

Операции с поддержкой SQL

Эти операции компилируются в SQL:
  • filter(), where()
  • select()
  • groupby(), agg()
  • sort(), orderby()
  • limit(), offset()
  • join(), union()
  • distinct()
  • Операции со столбцами (математика, сравнение, строковые методы)

Операции только в Pandas

Они запускают выполнение и используют pandas:
  • apply() с пользовательскими функциями
  • pivot_table() со сложными агрегациями
  • stack(), unstack()
  • Операции с уже выполненными DataFrame

Гибридные конвейеры


Выбор движка выполнения

DataStore может выполнять операции с помощью разных движков:

Автоматический режим (по умолчанию)

Принудительно использовать движок chDB

Принудительное использование движка pandas

Подробности см. в разделе «Конфигурация: движок выполнения».

Влияние на производительность

Хорошо: фильтровать как можно раньше

Плохо: фильтровать слишком поздно

Хорошо: сразу выбирайте нужные столбцы

Хорошая практика: пусть SQL делает всю работу


Краткий обзор рекомендаций

  1. Объединяйте операции в цепочку перед выполнением - Сначала соберите полный запрос, затем запускайте его один раз
  2. Фильтруйте как можно раньше - Сокращайте объём данных в источнике
  3. Выбирайте только нужные столбцы - Отсечение столбцов повышает производительность
  4. Используйте explain(), чтобы понять выполнение - Отлаживайте до запуска
  5. Поручайте агрегации SQL - ClickHouse оптимизирован для этого
  6. Учитывайте, что запускает выполнение - Избегайте случайного преждевременного запуска
  7. Используйте кэширование с умом - Понимайте, когда кэш сбрасывается
Последнее изменение 12 июня 2026 г.