Отложенное вычисление
Пример: отложенное и немедленное вычисление
Преимущества отложенного вычисления
- Оптимизация запросов: Несколько операций компилируются в один оптимизированный SQL-запрос
- Pushdown фильтров: Фильтры применяются на уровне источника данных
- Исключение лишних столбцов: Считываются только нужные столбцы
- Отложенные решения: Движок выполнения можно выбрать при выполнении
- Просмотр плана: Перед выполнением запроса можно просмотреть план и отладить его
Триггеры выполнения
Автоматические триггеры
Примеры:
Операции, которые остаются отложенными
Примеры:
Трёхфазное выполнение
Фаза 1: Отложенное построение SQL-запроса
Фаза 2: Момент выполнения
Фаза 3: Операции с DataFrame (если есть)
Просмотр Execution Plan
explain(), чтобы увидеть, что будет выполнено:
Query
Response
verbose=True для получения более подробной информации:
Кэширование
Как работает кэширование
Инвалидация кэша
Управление кэшем вручную
Сочетание SQL и операций Pandas
SQL-совместимые операции
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- Операции со столбцами (математика, сравнение, строковые методы)
Операции только в Pandas
apply()с пользовательскими функциямиpivot_table()со сложными агрегациямиstack(),unstack()- операции над уже выполненными DataFrames
Гибридные конвейеры
Выбор движка выполнения
Автоматический режим (по умолчанию)
Принудительное использование движка chDB
Принудительно использовать движок pandas
Влияние на производительность
Хорошо: фильтруйте как можно раньше
Плохо: поздняя фильтрация
Хорошо: выбирайте столбцы заранее
Хорошо: доверьте SQL эту работу
Краткая сводка лучших практик
- Выстраивайте Operations в цепочку перед выполнением - Сначала сформируйте полный запрос, затем запускайте его один раз
- Фильтруйте как можно раньше - Уменьшайте объём данных как можно ближе к источнику
- Выбирайте только нужные столбцы - Отсечение столбцов повышает производительность
- Используйте
explain(), чтобы понять выполнение - Выполните Debug перед запуском - Поручите SQL агрегации - ClickHouse оптимизирован для этого
- Помните о триггерах выполнения - Избегайте случайного преждевременного запуска
- Используйте кэширование с умом - Понимайте, когда кэш сбрасывается