Я в нипонятках
Есть задача задокументировать код процесса, который ведет расчет накопительных скидок по дисконтным картам. Т.е. перевести алгоритм с языка программирования на человеческий. Проблема у процесса заключается в том, что работает он по 4 - 6 часов. Причина такого разброса непонятна. Тормозные точки найти тоже не удается -- там такое количество фетчей, что все штатные инструменты диагностики переполняют свои временные таблицы и крашат процесс до того момента, как объем накопленных буферных данных внутри процесса начинает влиять на скорость поиска в этом буфере. Надо писать свою диагностику, по хорошему. А это время, за которое никто не заплатит.
Всего дисконтных карт (живых и мертвых) у нас порядка 850 тысяч. Код штатного процесса писали знатные извращенцы (одного знаю лично), у меня мозги раком встают. Я пока во все это вникал, параллельно искал пути, как этого тормоза оптимизировать. И в итоге решил кое-что проверить и наваял на T-SQL (язык запросов непосредственно в самой базе данных) небольшой скриптик, который должен мне был все это посчитать с точки зрения здравого смысла, и без кучи реверансов, которые были в коде самого Navision (основная система). Отладил запрос, запустил.
Время работы — 4 секунды. 125 тысяч "живых" (т.е. тех, по которым были продажи в течении последних 12 месяцев) карт обработано. Проверка подтверждает, что мои результаты тютелька в тютельку бьются с теми, что были рассчитаны существующим процессом.
4 секунды!!!!
Не 6 часов.
Не 4 часа.
Не 40 минут.
И даже не 4 минуты!
4, СУКА, СЕКУНДЫ!
Я, реально, в непонятках. Так не бывает.
Отредактировано: 16 Апр 2025, 21:16.
Всего дисконтных карт (живых и мертвых) у нас порядка 850 тысяч. Код штатного процесса писали знатные извращенцы (одного знаю лично), у меня мозги раком встают. Я пока во все это вникал, параллельно искал пути, как этого тормоза оптимизировать. И в итоге решил кое-что проверить и наваял на T-SQL (язык запросов непосредственно в самой базе данных) небольшой скриптик, который должен мне был все это посчитать с точки зрения здравого смысла, и без кучи реверансов, которые были в коде самого Navision (основная система). Отладил запрос, запустил.
Время работы — 4 секунды. 125 тысяч "живых" (т.е. тех, по которым были продажи в течении последних 12 месяцев) карт обработано. Проверка подтверждает, что мои результаты тютелька в тютельку бьются с теми, что были рассчитаны существующим процессом.
4 секунды!!!!
Не 6 часов.
Не 4 часа.
Не 40 минут.
И даже не 4 минуты!
4, СУКА, СЕКУНДЫ!
Я, реально, в непонятках. Так не бывает.
Отредактировано: 16 Апр 2025, 21:16.