Быстрый старт
Включение профилирования
API профилировщика
Получение объекта профилировщика
report()
Пример вывода:
- Длительность каждого шага в миллисекундах
- Долю времени относительно родительского и общего вызова
- Иерархическую вложенность операций
- Метаданные для каждого шага (например,
ops_count,ops)
step()
clear()
summary()
Как читать отчёт
Названия шагов
Длительность
- Этапы планирования (Планирование запроса): Обычно выполняются быстро
- Этапы выполнения (Выполнение SQL): Здесь происходит основная работа
- Этапы передачи (Результат в DataFrame): Преобразование данных в DataFrame pandas
Выявление узких мест
Шаблоны профилирования
Профилирование отдельного запроса
Профилирование нескольких запросов
Сравнение подходов
Советы по оптимизации
1. Проверьте время выполнения SQL
SQL execution — узкое место:
- Добавьте больше фильтров, чтобы уменьшить объем данных
- Используйте Parquet вместо CSV
- Проверьте наличие подходящих индексов (для источников баз данных)
2. Проверьте время операций I/O
read_csv или read_parquet — узкое место:
- Используйте Parquet (столбцовый, сжатый формат)
- Читайте только нужные столбцы
- По возможности фильтруйте на стороне источника
3. Проверьте передачу данных
to_df работает медленно:
- Результирующий набор может быть слишком большим
- Добавьте больше фильтров или ограничьте выборку
- Используйте
head()для предварительного просмотра