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

Быстрый старт

Включение профилирования


API профилировщика

Получение объекта профилировщика

report()

Выводит отчёт о производительности.
Параметры:
ПараметрТипПо умолчаниюОписание
min_duration_msfloat0.1Показывать только шаги с длительностью не меньше этого значения
Пример вывода:
Отчёт показывает:
  • Длительность каждого шага в миллисекундах
  • Долю времени относительно родительского и общего вызова
  • Иерархическую вложенность операций
  • Метаданные для каждого шага (например, ops_count, ops)

step()

Вручную измерьте время выполнения блока кода.

clear()

Очищает все данные профилирования.

summary()

Возвращает словарь, сопоставляющий имена шагов с их длительностью (мс).
Пример вывода:

Как читать отчёт

Названия шагов

Название шагаОписание
Total ExecutionОбщее время выполнения
Query PlanningВремя, затраченное на планирование запроса
SQL Segment NВыполнение сегмента SQL N
SQL ExecutionНепосредственное выполнение SQL-запроса
Result to DataFrameПреобразование результатов в DataFrame pandas
Cache CheckПроверка кэша запросов
Cache WriteЗапись результатов в кэш

Длительность

  • Этапы планирования (Планирование запроса): Обычно выполняются быстро
  • Этапы выполнения (Выполнение SQL): Здесь происходит основная работа
  • Этапы передачи (Результат в DataFrame): Преобразование данных в DataFrame pandas

Выявление узких мест


Шаблоны профилирования

Профилирование отдельного запроса

Профилирование нескольких запросов

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


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

1. Проверьте время выполнения SQL

Если SQL execution — узкое место:
  • Добавьте больше фильтров, чтобы уменьшить объем данных
  • Используйте Parquet вместо CSV
  • Проверьте наличие подходящих индексов (для источников баз данных)

2. Проверьте время операций I/O

Если read_csv или read_parquet — узкое место:
  • Используйте Parquet (столбцовый, сжатый формат)
  • Читайте только нужные столбцы
  • По возможности фильтруйте на стороне источника

3. Проверьте передачу данных

Если to_df работает медленно:
  • Результирующий набор может быть слишком большим
  • Добавьте больше фильтров или ограничьте выборку
  • Используйте head() для предварительного просмотра

4. Сравните движки


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

1. Профилируйте перед оптимизацией

2. Очищайте состояние между тестами

3. Используйте min_duration_ms для Focus

4. Профилируйте на репрезентативных данных

5. Отключите в продакшне


Пример: полный сеанс профилирования

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