Блог

Разгадка магических тормозов медленного выполнения запроса

Недавно я написал заметку, в которой описал магическое выполнение запроса, которое поставило меня в ступор http://www.flenov.info/blog/show/Magicheskaya-problema-proizvoditelynosti. В этой заметке я не раскрою все тайны тормозов, потому что я так и не могу понять, почему тогда простое добавление перехода на новую строку меняло план выполнения, а реальное изменение запроса типа добавления and 1=1 или другие модификации оставляли запрос медленным. Даже OPTION (recompile) не влияла. Именно символ новой строки менял план выполнения. Скажу только, что на следующий день этот трюк не работал и запрос оставался медленным даже после добавления новой строки.

Итак, краткая история. Если просто выполнять запрос в SQL Server Management Studio, то он выполняется быстро:

Google I/O 2018 глазами хакера

К сожалению, я не могу порваться вчера и смотреть одновременно конференцию Microsoft и Google. Не понимаю, почему они так сделали, что обе конференции идут одновременно. Приходится сейчас смотреть в записи. В общем, смотрю, и рассказываю свое мнение. Заметка будет обновляться в процессе того, как я смотрю и появляется что-то интересное, чтобы отметить.

Если конференция Microsoft началась с рекламы облака, а уже на втором месте шло машинное обучение и искусственный интеллект, то Google поставили AI на первое место. В принципе, Google никогда так сильно не продвигали свое облако, что странно. Ведь это огромная статья доходов в прибыли Amazon и Microsoft и при всей своей возможности Google не хочет ввязываться в эту войну в открытую. Странно. Мне кажется, поисковый гигант тут немного неверно выбрал приоритеты. 

Виртуальная реальность от Самсунг

Были тут в фирменном магазине Самсунг в торговом центре в самом центре Торонто и просто на моя взгляд народу было в нем меньше, чем в Apple, но больше, чем в Microsoft. Но тут нужно быть асболютно честным и признать, что магазин Самсунг в размере занимает столько же, сколько Apple и Microsoft вместе взятые. Он простирается аж на два этажа и в нем представлены не только телефоны, планшеты, но и телевизоры и бытовая техника. Так что количество народу могло бы быть и еще больше для такого широкого ассортимента товаров крупного производителя. 

Microsoft Build 2018

На 15 минут позже, но все же начался Microsoft Build 2018. Не помню, чтобы у Apple была такая задержка. Мне кажется, что все будет только про облака, белагривые Azure. 

Ну да, вот только началось все и сразу же сообщают, что будет Azure везде. Я в основном пока работал только с облаком Amazon, но интересно, что происходит в облачном мире Microsoft. Постараюсь вести что-то типа трансляции со своим мнением о происходящем. Правда у меня два совещания сегодня, буду уходить в офлайн. 

Началось вступительное слово Сатья, в котором он рассказывает про технологии, которые развились за последние годы, что компьютеры  сейчас совершенно везде. Тут же показывают машину и что в ней тоже есть компьютер. Он говорит о том, что мнлго встроенных систем. И что самое ржачное, Майкрософт ведь не причем. В машинах Ford отказался от Microsoft Sync, его кажется уже никто не использует. Везде во встроенных системах доминирует Linux, Поэтому к чему ведет речь Сатья, я не понимаю. 

Cortana – поиск магазина

У меня уже долгое время Surface Pro, но я не пользовался Кортаной, хотя это основной помощник Windows. Я и Apple помощницей почти не пользуюсь, разве что только за рулем. 

Сейчас сидел дома у окошка с Surface Pro, читал утренние новости, а жена спросила, во сколько начинает работать магазин Costco. Телефона под рукой не было, на компьютере загружать сайт что-то лень было, и я решил спросить Siri на часах. Я задал простой короткий вопрос: Closest Costco. С точки зрения классического английского это даже не вопрос и не предложение, потому что отсутствует глагол, но подобные вещи часто можно услышать в Канаде. Я и от американцев такое слышал. 

Apple Watch быстро нашли мне ближайший магазин и показали время работы заправочной станции при нем. Почему часы решили, что мне нужна именно заправка? Я сидел дома у окна, Apple явно знают мое расположение (сервис определения положения включен), телефон не подключен в данный момент к машине. В общем, причин показывать время работы заправки не было. 

И тут я вспомнил, что у Windows есть умная Cortana и я много слышал о ее уме, что она умнее Apple Siri. Решил проверить и задал такой же запрос. Но разумный результат я получил только с третьего раза, потому что Cortana что-то занималась фигней. Я диктую вопрос, я вижу, что компьютер правильно распознает мой английский, потому что в текстовой строке появляются слова, которые я говорю, но как только я заканчиваю говорить, Кортана переворачивает все с ног на голову и показывает бред. 

Магическая проблема производительности

Мне часто приходится решать проблемы с производительностью и последние два дня борюсь с запросом, который мне просто вынес мозг. 

Запрос большой и строится динамически, поэтому я запустил сайт, подключился к нему дебагером и выцепил из кода SQL запрос. Запускаю его в SQL Server Management Studio, и он выполняется за 4 секунды максимум. Но когда абсолютно этот же код выполняется в коде сайта, он работает более минуты.

Я потратил целый день на то, что менял запрос в разные стороны, добавлял OPTION (RECOMPILE) на случай, если проблема с планом выполнения, танцевал вокруг компьютера и ничего не помогало. 

Я дебагил каждую строчку кода в надежде понять, может там есть какие-то параметры при запуске запроса, которые могут убить производительность, но там ничего не было. Сравнил типы всех переменных, все совпадает. Производительность может падать, если тип параметра не совпадает с типом данных в базе, но нет, все отлично. 

Потом я решил запустил профайлер и выцепить запрос оттуда, и его там показали следующим образом:

Apple начала выпускать все с задержками

Похоже у Apple запуски всего с задержкой стали привычкой. Чамы были объявлены, но вышли с большой задержкой. Колонка - та же самая песня. iTunes для Windows 10 вышел почти через год после объявления. 

Мне кажется, Apple пора что-то с этим делать. Возможно просто не объявлять так рано продукты, если не может их вывести на рынок. Это так, мое личное мнение. 

Что я жду от Surface Pro 5

Подходит время конференций от Microsoft, Apple и Google и от Microsoft. Народ ожидает, что появится новый Surface Pro 5-го поколения. 

Я хорошо отношусь к Surface Pro, у меня есть это устройство третьего поколения, и я доволен. Жалею, что не взял версию с 16 гигабайтами оперативной памяти, потому что для программирования и базы SQL Server 8 гигабайт это в притирку. Но в остальном я очень доволен.

Сегодня был в магазине Microsoft и смотрел Surface Book и Surface Laptop, и я все еще считаю, что Surface Pro – это лучшее устройство от Microsoft. 

В понeдельник будет Windows 10 апрельское обновление

Microsoft уже давно работает над апрельским обновлением Windows, в котором нам скорей всего станет доступна новая тема проводника - черная. Походу везде переходят на нее, и мне это нравится. Я в VS использую черную тему, в скайпе, в программе Почта (или как там перевели приложение Mail в Windows). В общем, я только за. 

И обновление так долго готовили, что понедельник последний шанс его выпустить. Если его не запустят, то придется переименовываться в Майский апдейт. 

Из интересных новинок - Timeline. Можно найти во временной шкале документы и разную фигню, с которой вы работали в прошлом. Круто. Это очень удобно для поиска того, чтоя просматривал в браузере, потому что там поиск по истории - это издевательство. 

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне