Профилировщик DataStore помогает измерять время выполнения и выявлять узкие места.
Получение объекта профилировщика
Выводит отчёт о производительности.
Параметры:
| Параметр | Тип | По умолчанию | Описание |
|---|
min_duration_ms | float | 0.1 | Показывать только шаги с длительностью не меньше этого значения |
Пример вывода:
Отчёт показывает:
- Длительность каждого шага в миллисекундах
- Долю времени относительно родительского и общего вызова
- Иерархическую вложенность операций
- Метаданные для каждого шага (например,
ops_count, ops)
Вручную измерьте время выполнения блока кода.
Очищает все данные профилирования.
Возвращает словарь, сопоставляющий имена шагов с их длительностью (мс).
Пример вывода:
| Название шага | Описание |
|---|
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() для предварительного просмотра
1. Профилируйте перед оптимизацией
2. Очищайте состояние между тестами
3. Используйте min_duration_ms для Focus
4. Профилируйте на репрезентативных данных
Пример: полный сеанс профилирования
Последнее изменение 2 июля 2026 г.