Skip to main content
DataStore обеспечивает существенный прирост производительности по сравнению с pandas во многих операциях. В этом руководстве объясняется, почему это так и как оптимизировать рабочие нагрузки.

Почему DataStore работает быстрее

1. SQL Pushdown

Операции выполняются на уровне источника данных:

2. Отсечение столбцов

Читаются только необходимые столбцы:

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

Несколько операций сводятся к одному запросу:

Бенчмарк: DataStore vs pandas

Тестовое окружение

  • Данные: 10 миллионов строк
  • Оборудование: стандартный ноутбук
  • Формат файла: CSV

Результаты

Ключевые выводы

  1. Операции GroupBy: DataStore до 19,93x быстрее
  2. Сложные конвейеры: DataStore в 5–6 раз быстрее (за счёт SQL pushdown)
  3. Простые операции среза: производительность сопоставима — разница незначительна
  4. Лучший сценарий использования: многошаговые операции с группировкой и агрегацией
  5. Zero-copy: to_df() не создаёт накладных расходов на преобразование данных

Когда DataStore — лучший выбор

Тяжелые агрегации

Сложные конвейеры

Обработка больших файлов

Операции над несколькими столбцами


Когда pandas показывает сопоставимую производительность

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

Небольшие наборы данных (<1,000 строк)

Простые операции со срезами

Пользовательские лямбда-функции Python

ВажноДаже в случаях, когда DataStore работает «медленнее», производительность обычно сопоставима с pandas — на практике разница несущественна. Преимущества DataStore при выполнении сложных операций значительно перевешивают эти редкие исключения.Для более точного управления выполнением см. конфигурацию движка выполнения.

Интеграция DataFrame без копирования данных

DataStore использует zero-copy при чтении и записи объектов pandas DataFrame. Это означает:
Ключевые выводы:
  • to_df() практически ничего не стоит — без сериализации и копирования в памяти
  • DataStore создается из pandas DataFrame мгновенно
  • DataStore и представления pandas используют общую память

Советы по оптимизации

1. Включите режим производительности для ресурсоёмких рабочих нагрузок

Для рабочих нагрузок с интенсивной агрегацией, где вам не нужен точный формат вывода pandas (порядок строк, столбцы MultiIndex, корректировки dtype), включите режим производительности для максимальной пропускной способности:
Ожидаемое улучшение: До 2–8 раз быстрее для рабочих нагрузок с filter+groupby, а также меньшее использование памяти для больших файлов Parquet. См. Режим производительности для получения полной информации.

2. Используйте формат Parquet вместо CSV

Ожидаемое улучшение: чтение данных в 3–10 раз быстрее

3. Фильтруйте как можно раньше

4. Выбирайте только нужные столбцы

5. Используйте агрегации SQL

6. Используйте head() вместо полных запросов

7. Батч-операции

8. Используйте explain() для оптимизации


Данные профилирования рабочей нагрузки

Включите сбор данных профилирования

Выявите узкие места

Сравнение подходов


Краткая сводка лучших практик


Краткое руководство по выбору

Для автоматического выбора оптимального движка используйте config.set_execution_engine('auto') (по умолчанию). Для максимальной пропускной способности при рабочих нагрузках с агрегацией используйте config.use_performance_mode(). Подробности см. в разделах Движок выполнения и Режим производительности.
Последнее изменение 3 июля 2026 г.