Недавно я написал заметку, в которой описал магическое выполнение запроса, которое поставило меня в ступор http://www.flenov.info/blog/show/Magicheskaya-problema-proizvoditelynosti. В этой заметке я не раскрою все тайны тормозов, потому что я так и не могу понять, почему тогда простое добавление перехода на новую строку меняло план выполнения, а реальное изменение запроса типа добавления and 1=1 или другие модификации оставляли запрос медленным. Даже OPTION (recompile) не влияла. Именно символ новой строки менял план выполнения. Скажу только, что на следующий день этот трюк не работал и запрос оставался медленным даже после добавления новой строки.
Итак, краткая история. Если просто выполнять запрос в SQL Server Management Studio, то он выполняется быстро:
К сожалению, я не могу порваться вчера и смотреть одновременно конференцию Microsoft и Google. Не понимаю, почему они так сделали, что обе конференции идут одновременно. Приходится сейчас смотреть в записи. В общем, смотрю, и рассказываю свое мнение. Заметка будет обновляться в процессе того, как я смотрю и появляется что-то интересное, чтобы отметить.
Если конференция Microsoft началась с рекламы облака, а уже на втором месте шло машинное обучение и искусственный интеллект, то Google поставили AI на первое место. В принципе, Google никогда так сильно не продвигали свое облако, что странно. Ведь это огромная статья доходов в прибыли Amazon и Microsoft и при всей своей возможности Google не хочет ввязываться в эту войну в открытую. Странно. Мне кажется, поисковый гигант тут немного неверно выбрал приоритеты.
Были тут в фирменном магазине Самсунг в торговом центре в самом центре Торонто и просто на моя взгляд народу было в нем меньше, чем в Apple, но больше, чем в Microsoft. Но тут нужно быть асболютно честным и признать, что магазин Самсунг в размере занимает столько же, сколько Apple и Microsoft вместе взятые. Он простирается аж на два этажа и в нем представлены не только телефоны, планшеты, но и телевизоры и бытовая техника. Так что количество народу могло бы быть и еще больше для такого широкого ассортимента товаров крупного производителя.
На 15 минут позже, но все же начался Microsoft Build 2018. Не помню, чтобы у Apple была такая задержка. Мне кажется, что все будет только про облака, белагривые Azure.
Ну да, вот только началось все и сразу же сообщают, что будет Azure везде. Я в основном пока работал только с облаком Amazon, но интересно, что происходит в облачном мире Microsoft. Постараюсь вести что-то типа трансляции со своим мнением о происходящем. Правда у меня два совещания сегодня, буду уходить в офлайн.
Началось вступительное слово Сатья, в котором он рассказывает про технологии, которые развились за последние годы, что компьютеры сейчас совершенно везде. Тут же показывают машину и что в ней тоже есть компьютер. Он говорит о том, что мнлго встроенных систем. И что самое ржачное, Майкрософт ведь не причем. В машинах Ford отказался от Microsoft Sync, его кажется уже никто не использует. Везде во встроенных системах доминирует Linux, Поэтому к чему ведет речь Сатья, я не понимаю.
У меня уже долгое время 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 запуски всего с задержкой стали привычкой. Чамы были объявлены, но вышли с большой задержкой. Колонка - та же самая песня. iTunes для Windows 10 вышел почти через год после объявления.
Мне кажется, Apple пора что-то с этим делать. Возможно просто не объявлять так рано продукты, если не может их вывести на рынок. Это так, мое личное мнение.
Подходит время конференций от Microsoft, Apple и Google и от Microsoft. Народ ожидает, что появится новый Surface Pro 5-го поколения.
Я хорошо отношусь к Surface Pro, у меня есть это устройство третьего поколения, и я доволен. Жалею, что не взял версию с 16 гигабайтами оперативной памяти, потому что для программирования и базы SQL Server 8 гигабайт это в притирку. Но в остальном я очень доволен.
Сегодня был в магазине Microsoft и смотрел Surface Book и Surface Laptop, и я все еще считаю, что Surface Pro – это лучшее устройство от Microsoft.
Microsoft уже давно работает над апрельским обновлением Windows, в котором нам скорей всего станет доступна новая тема проводника - черная. Походу везде переходят на нее, и мне это нравится. Я в VS использую черную тему, в скайпе, в программе Почта (или как там перевели приложение Mail в Windows). В общем, я только за.
И обновление так долго готовили, что понедельник последний шанс его выпустить. Если его не запустят, то придется переименовываться в Майский апдейт.
Из интересных новинок - Timeline. Можно найти во временной шкале документы и разную фигню, с которой вы работали в прошлом. Круто. Это очень удобно для поиска того, чтоя просматривал в браузере, потому что там поиск по истории - это издевательство.