spacious-team / investbook

Оценка эффективности инвестиций с учетом комиссий, налогов (удержанных и ожидающихся), дивидендов и купонов.
https://t.me/investbook_support_bot
GNU Affero General Public License v3.0
276 stars 80 forks source link

Рефакторинг кода обращения к БД #608

Closed vananiev closed 1 month ago

vananiev commented 1 month ago

В результате изменений PR количество SELECT-ов снижено в 2 раза, количество транзакций снизилось в 1,5 раза. Время загрузки изменилось не существенно.

До оптимизации: Время загрузки, сек select count update count other_commands count commit count rollback count
Новые данные 13 75254 26864 171500 144863 14100
Дубли данных 18 77035 25716 170722 107770 51432
После оптимизации: Время загрузки, сек select count update count other_commands count commit count rollback count
Новые данные 11 32388 25693 175318 102480 11758
Дубли данных 17 31418 22294 167977 62834 44588

Тестирование выполнено на 626 отчетах брокера ПСБ. Данные загружались 2 раза: один раз в чистую БД, а затем поверх уже прогруженных данных загружались снова те же данные.

Время загрузки замерялось на H2 (основная СУБД). Количество запросов и коммитов получено с MariaDB (отображает статистику по количеству запросов) запросом статистики

SET GLOBAL userstat=1;
SELECT
    user,
    select_commands,
    update_commands,
    other_commands,
    commit_transactions,
    rollback_transactions
FROM 
    information_schema.user_statistics;

Тестовый ПК Intel Core i5 12400F.