Перейти к основному содержанию
DataStore поддерживает два режима совместимости, которые определяют, будет ли вывод адаптирован для совместимости с pandas или оптимизирован для производительности Raw SQL.

Обзор

Что отключается в режиме производительности


Включение режима производительности

Использование объекта config

Использование функций на уровне модуля

Использование сокращённых импортов

Включение режима производительности автоматически устанавливает движок выполнения chdb. Отдельно вызывать config.use_chdb() не нужно.

Когда использовать режим производительности

Используйте режим производительности, если:
  • Обрабатываете большие наборы данных (от сотен тысяч до миллионов строк)
  • Запускаете рабочие нагрузки с интенсивной агрегацией (groupby, sum, mean, count)
  • Порядок строк не имеет значения (например, для агрегированных результатов, отчетов и панелей мониторинга)
  • Вам нужна максимальная пропускная способность SQL и минимальные накладные расходы
  • Вас беспокоит использование памяти (параллельное чтение Parquet, без промежуточных DataFrame)
Оставайтесь в режиме pandas, если:
  • Вам нужно точное поведение pandas (порядок строк, MultiIndex, dtypes)
  • Для вас важно, чтобы first()/last() возвращали действительно первую/последнюю строку
  • Вы используете shift(), diff(), cumsum(), которые зависят от порядка строк
  • Вы пишете тесты, сравнивающие вывод DataStore с pandas

Различия в поведении

Порядок строк

В режиме производительности порядок строк не гарантируется ни для каких операций. Это относится к следующему:
  • Результаты фильтрации
  • Результаты агрегирования GroupBy
  • head() / tail() без явного sort_values()
  • Агрегации first() / last()
Если вам нужны упорядоченные результаты, добавьте явный sort_values():

Результаты GroupBy

Агрегация

Выполнение одним SQL-запросом

В режиме производительности агрегация GroupBy для ColumnExpr (например, ds[condition].groupby('col')['val'].sum()) выполняется как один SQL-запрос, а не в два этапа, как в режиме pandas:
Это исключает промежуточную материализацию DataFrame и может значительно сократить использование памяти и время выполнения.

Сравнение с движком выполнения

Режим производительности (compat_mode) и движок выполнения (execution_engine) — независимые параметры конфигурации: При установке compat_mode='performance' параметр execution_engine автоматически получает значение chdb, поскольку режим производительности предназначен для выполнения SQL.

Тестирование в режиме производительности

При тестировании в режиме производительности результаты могут отличаться от pandas порядком строк и структурой данных. Используйте следующие стратегии:

Сортировка с последующим сравнением (агрегации, фильтры)

Проверка диапазона значений (первое/последнее)

Схема и количество строк (LIMIT без ORDER BY)


Рекомендации

1. Включайте в самом начале скрипта

2. Явно задавайте сортировку, когда важен порядок

3. Используйте для пакетных и ETL-нагрузок

4. Переключение режимов в сеансе