Показать сообщение отдельно
Старый 02.04.2022, 13:19   #1  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
D365FO: Тяжелый запрос в продакшне vs. в машине для разработки
Есть кастомная вьюха, основанная на нескольких других вьюхах, тоже кастомных, в т.ч. с группировками и с "computed columns". Всё это работает на таблицах с миллионами записей.

Есть форма, основанная на этой вьюхе, искользуется для выверки данных помесячно. Форма загружает записи из вьюхи только после того, как юзер выберет пару значений в фильтре (месяц и год) и нажмет Apply. Эти поля покрыты индексом в базовой таблице, в той что с миллионами записей. Другие индексы в наличии.

Проблема в следующем: на машине для разработки, где данных всего раза в два меньше, чем в продакшне, октябрь открывается, скажем, за 15 секунд, ноябрь за 30, декабрь (самый тяжелый по количеству записей) за 6 минут.

В продакшне (где, казалось бы, производительность должна быть как минимум не хуже машины разработчика), октябрь хорошо если открывается через несколько минут, а-то и не октрывается совсем, декабрь всегда без исключения зависает и через час заканчивается ошибкой "... A time-out occurred in the database while the query was executing"

Я понимаю, что вьюху лучше переписать, чтобы запросы были полегче и чтобы вместо неё в форме заполнялась и отображалась временная таблица. Тем более что общее количество записей на вывод не превышает нескольких сотен после всех группировок.

Но тысяча чертей, почему продакшн так тормозит по сравнению с обычной машиной для разработки, даже в запросах, отрабатывающих за пару десятков секунд?