169 похожих чатов

Или вот еще.. есть SQL не-очень-хитрый-запрос. На нашем MS SQL

сервере, что в докере поднят чуть ли ни с минимальными ресурсами, он выполняется 1.5-3.5 сек. На проде, на родном Виндовз Сервере, с ресурсами в 10 раз больше (другие запросы у них в 10 раз быстрее), вот этот специфичный не-очень-хитрый-запрос выполняется 25 МИНУТ!!! 1.5 сек против 25 минут!!! Добавление индексов по рекомендацим профайлера УХУДШАЮТ время до 35 мин. Админы БД сервера сертифицированы Мелкосовтом по последнему уровню. Они делают БОЛЬШИЕ глаза и разводят руками.. Ну вот какой курс может о таком рассказать?
Ну да, базы идентичны - обе подняты с одного и того же дампа. Настройки бд сервера.. уже все перетыкали, даже идей нет

12 ответов

7 просмотров

В локальном окружении свежевосстановленном из бэкапа нет ни процедурного кэша, ни, на сколько я помню, табличных статистик. Поэтому сравнивать боевой сервер с локальным не всегда просто. Анализ плана в таких случаях всегда помогает. Ну и профайлер в помощь. Все эти инструменты у мс куда круче чем у пг, так что надо радоваться благам)

Sergei- Автор вопроса
Andrew Berdnikov
В локальном окружении свежевосстановленном из бэка...

Это первое о чем подумали, подняли в выходные тестовую БД на подовом сервере, востановили из дампа. Та же фигня. Сейчас единственная мысль - много памяти у SQL сервера включает там какие-то "супер оптимизационные механизмы", что приводят вот к такому. Ну и это.. я не проффи админ по бд, да и вообще там рулят админы заказчика, у нас прямого доступа нет по соображениям высокой-безопасности! (их безопасники - зверюги еще те). Так что.. могу только пересказывать с их слов что они пытались делать. По их словам и планы анализировали, и профейлили не раз, и даже индексы по другому расставляли (типа, чуть менее оптимально). В общем.. пришлось эмулировать with, union all и where в js, закачивая все в память.. хорошо хоть влезло в 1.6 Гига и таблицы не из тех что растут со временем..

Может блокировки на проде способствуют такому времени? Или исключили такой вариант уже

Sergei- Автор вопроса
WolderVsrat
Может блокировки на проде способствуют такому врем...

Исключили - тестовая БД вообще в моноюзере работала. В общем пару недель поковыряли, плюнули и обошли. Не, ну можно было еще полностью архитектуру переделать, даже были мысли.. Но.. сумма контракта такое не вмещала 8)

Sergei
Исключили - тестовая БД вообще в моноюзере работал...

У меня просто часто аналогичная проблема вспывала, выяснилось, что у нас по дефолту даже при селекте другим юзером ставилась блокировка. А запрос был очень тяжёлый. И второй запрос затрагивающий ту же таблицу висел в ожидании первого. Решили ессно в лоб с with (nolock) со стороны параллельных запросов. Другие рекомендации нам не помогали, что забавно. Но уже, с учётом ухода мелкомягких, это меньшее из зол, конечно. Думаем о миграции..

Sergei- Автор вопроса
WolderVsrat
У меня просто часто аналогичная проблема вспывала,...

Самое забавное, если переписать с with на временные таблицы - все начинает летать как и положено, меньше секунды. Однако... такие запросы имеют неприятность приходить пиками, и когда надо создать 100 временных таблиц приличного размера почти одновременно, сервак затыкается с гарантией. Т.е. разовый запрос вроде - все хорошо, а нагрузочное тестирование - полный облом

Как правило, если копать долго и глубоко, накопать можно. За 25 лет написания бэкендов видел раза три, когда объяснений вообще ноль. Ну теоретически баг какой-то может быть, изредка. Ваша ситуация выглядит как рейсинг лок-таймаут-сброс- продолжение где-то. Слишком большая разница во времени. Я бы копал в i/o locks. Но забить и обойти часто тоже вариант. Может, кто-то лочит и не закрывает транзакцию?

Sergei
Самое забавное, если переписать с with на временн...

А место на дисках достаточно кстати? Такое теоретически можно возникнуть из-за нехватки места из-за растущей tempdb раз уж речь о временных таблицах

Sergei- Автор вопроса
Alex Pakka
Как правило, если копать долго и глубоко, накопать...

А не понятно как копать. Нас не пускают к серверам клиента. Только через сообщение админу "а попробуйте вот это", в ответ "не вышло, вот логи". Это диагноз по фотографии считай. По этой же причине саппорт мелкомягких не подключали. Не, точно проблема не в локанье. Там что-то с построением временных индексов, вроде.. Не, места хватает памяти тоже, затык на уровне процессора (100%) загрузка. Ладно, обошли и обошли. Забыть хочется как страшный сон 8) Теперь бы с IndexDB хоть что-то наковырять... Ну или думать как и это обходить..

Sergei
А не понятно как копать. Нас не пускают к серверам...

Вариант с забыть тоже норм) К сожалению, часто попадали с другими продуктами MS ( особенно Dynamics ) на нерешаемые баги с нашей стороны, решений в сети нет, и единственный выход - тикет в MS. А это можно сказать вообще черная дыра.

Sergei- Автор вопроса
WolderVsrat
Вариант с забыть тоже норм) К сожалению, часто поп...

Еще подозреваем, что это какие-то баги при индексировании по uniqueidentifier.. Он у MS не так давно реализован, детские болезни могут быть.. Но.. на него завязано пару ключевых фич, тоже перекраивать архитектуру дорого и долго. Саппорты крупных компаний.. по реально сложным вопросам нам ни разу не удалось получить решения.. Ну.. разве что "а поменяйте как вы железо серверное, глядишь поможет" 8)

Sergei
Еще подозреваем, что это какие-то баги при индекси...

Скорее "пробовали перезапустить сервис / выключить и включить?" ( Это кстати реальная рекомендация от вендора часто была )))

Похожие вопросы

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us We offer Interview Support for a low cost variety of technol...
Rambabu Nallamilli
3
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
28
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
А что ты вообще делаешь ?
Yesgoter
13
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Карта сайта