Freelancers.in.uaБіржа фрілансу

Прискорення звіту в B2B-сервісі

Про проєкт

Прискорення звіту: виміри й зміни

Початковий час виконання: близько 18 хвилин для щоденного звіту за всіма активними клієнтами. Звіт формувався на Python і PostgreSQL; дані для кожної операції читалися окремим запитом через SQLAlchemy.

Причина: профіль запитів показав N+1 — до основної вибірки додавалися тисячі звернень по картки клієнтів. Окремо перевірив план виконання запиту по періоду: фільтр за датою не використовував індекс у потрібному порядку.

Зміни в реалізації

  1. Завантаження карток клієнтів замінено на пакетний запит.
  2. Підрахунок сум і групування за статусом перенесені в PostgreSQL.
  3. Додано складений індекс для вибірки за клієнтом і датою після перевірки плану запиту.
  4. Генерацію звіту розділено на порції з фіксацією останньої обробленої позиції.

Після змін: типовий запуск тривав близько 4 хвилин. Результати звірені зі старою версією на тримісячній копії даних; підсумкові суми збіглися, у тому числі для клієнтів із великим числом операцій. Перевірка охоплювала один звіт і не змінювала правила фінансового обліку.

Команда запуску й параметри порцій збережені в репозиторії. Для подальших змін доданий автоматизований тест на збіг підсумків.

Додано 03.11.2026

Інші роботи автора

Усе портфоліо