Перейти к основному содержанию
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-запросом

В режиме производительности агрегирование ColumnExpr с groupby (например, 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. Переключение режимов в одном сеансе


Последнее изменение 12 июня 2026 г.