SQLSaturday прошла, да здравствует SQLSaturday! :) В то время, когда стали доступны материалы докладов SQLSaturday Kyiv, вовсю идёт подготовка к SQLSatuday Lviv. Куча новостей по новинкам автоматической оптимизации запросов в новой версии SQL Server. Новые статьи Пола Рендала, Дмитрия Пилюгина, Пола Уайта и и уже традиционный BI раздел от Евгения Полоничко. Все это и многое другое в этом дайджесте.
SQLSaturday
Материалы Докладов SQLSaturday Kyiv 2017доступны для загрузки. Спасибо всем за участие! Наши прекрасные докладчики выгрузили все материалы своих докладов на сайт. Качайте и наслаждайтесь :)
SQLSaturday Lviv 2017 — наша любимая конференция SQLSaturday недавно прошла в Киеве и вот отличная новость от лидера львовского сообщества Сергея Лунякина: SQLSaturday снова в Украине! 20 августа пройдёт конференция SQLSaturday во Львове. Если вы хотите послушать качественные доклады по SQL Server, BI и базам данных, регистрируйтесь прямо сейчас! Количество мест ограничено. Если вы хотите выступить на SQLSaturday, у вас есть такой шанс, сейчас ещё идёт приём докладов. Если вы или ваша компания хотите поддержать конференцию, подавайтесь как спонсор, организаторы будут вам благодарны и помогут вам достичь ваших целей, которые вы ставите перед участием в конференции! До встречи на SQLSaturday Lviv!
SQL Server 2017 Performance Improvements
Так много деталей улучшений производительности нового SQL Server раскрыто, что это достойно отдельного раздела.
Introducing Batch Mode Adaptive Joins — новый оператор в плане запроса: Adaptive Join. Оператор имеет три входа, вместо двух. И в зависимости от того, сколько записей подано на первый вход по факту, оператор выбирает, какой тип джоина использовать: Hash или Nested Loops (2 и 3 вход соответственно).
SQL Server 2017: Adaptive Join Internals — детальный разбор того, как работает адаптивный джоин от Дмитрия Пилюгина.
Introducing Batch Mode Adaptive Memory Grant Feedback — ещё одна фича адаптивного процессинга запроса в SQL Server 2017 — адаптивный грант памяти. Грант памяти используется в таких операторах, как Sort и Hash Match, и оценивается он один раз на этапе построения плана запроса. Новшество адаптивного гранта в том, что в случае, если по факту выполнения запроса потребовалось больше памяти чем оценивалось, или наоборот, использовалось по факту в два раза меньше памяти чем оценивалось, данные о гранте памяти корректируются в закэшированном плане запроса.
SQL Server 2017: Sort, Spill, Memory and Adaptive Memory Grant Feedback — детальный разбор адаптивного гранта памяти от Дмитрия Пилюгина.
SQL Server vNext: Interleaved Execution for mTVF — SQL Server 2017 очень сильно улучшает производительность multi-statement табличных функций за счёт фичи Interleaved Execution. Напомню, что по умолчанию SQL Server считает, что multi-statement табличная функция возвращает одну строку. Interleaved Execution меняет это не самое лучшее поведение в лучшую сторону. Смысл её в том, что раз функция всё равно выполняется в процессе выполнения, имеет смысл её выполнить в самом начале и использовать информацию о возвращённом количестве строк для построения оставшейся части плана. Детально про то, как это работает читаем где? Правильно, в блоге Дмитрия Пилюгина :) Лично я всегда так делаю :)
Automatic plan correction in SQL Server 2017 — запрос выполнялся быстро, потом начал выполняться долго из-за того, что изменился план запроса? Новый SQL Server позволяет это определить и принудительно форсировать более быстрый план для последующих вызовов данного запроса.
Automatic index management in Azure SQL database — некий прототип этого мы уже видели в DTA, но, мягко говоря, тогда это было далеко от идеала. Сейчас всё должно быть лучше. Кроме того, что SQL Server (SQL Azure Database) может определять, что лучше для вашей базы, он может динамически удалять и создавать индексы в вашей базе :) Если вы это сами ему разрешите.
Почитать
Query optimization — недавно наткнулся на очень интересный блог одного из сотрудников Майкрософт. Подача материала довольно специфическая, блог старенький, но удивительно просто и кратко автор подаёт важные вещи. В этом посте он рассказывает о том, из чего состоит Duration запроса, куда смотреть, если запрос выполняется дольше чем должен, и какие стандартные действия могут быть в той или иной ситуации.
Entity Framework Performance and What You Can Do About It — must read статья для всех, кто использует Entity Framework в своих проектах. Очень доступно преподносится информация о том, почему в том или ином случае EF неэффективен и как это можно улучшить.
Extended Events — Configuring Session Options — статья-справочник по опциям сессии EE. Просто и доступно описаны опции и что они дают.
SQL Server In-Memory OLTP Internals for SQL Server 2016 — не за горами выпуск SQL Server 2017, а технология In-Memory OLTP входит уже в третий релиз SQL Server. К чему это я? К тому что пора использовать или хотя бы присмотреться к этой технологии. Первый ресурс, с которого желательно начать, вот эта статья (или скорее мини-книга :)) Kalen Delaney.
How are default column values stored?— как на самом деле хранятся DEFAULT значения для колонки в SQL Server? Это просто метаданные или значения хранятся в строке таблицы, как и обычные значения? Не буду раскрывать все карты :) Читаем пост Пола Рендала с детальным разбором и доказательствами.
What is a Page Split? What happens? Why does it happen? Why worry?— Page Split, несмотря на кажущуюся простоту этого понятия, является довольно тяжёлым для понимания процессом. Как всё происходит на самом деле, в деталях, можно прочитать в довольно старой, но классной статье Тони Роджерсона.
SQL Server Mysteries: The Case of the Not 100% RESTORE...— наверняка вы такое видели. Восстанавливаете бекап, видите сообщение, что 100% данных восстановлены, а задача висит ещё какое-то время. Этому есть вполне логическое объяснение. 100% — это сообщение о том, что скопированы все страницы данных, время которое мы ждём после 100% — восстановление куска лога транзакций из бекапа. Для более детальной информации читаем как всегда прекрасную статью Боба Варда.
SQL Server Temporary Object Caching — вы знали, что временные таблицы (некоторые страницы) могут кэшироваться? Если нет, читаем статью Пола Уайта. Знали, но хотите узнать больше? Читаем статью Пола Уайта.
The Myth that DROP and TRUNCATE TABLE are Non-Logged — логируются ли операции DROP и TRUNCATE? Да. Как и почему, отвечает в своей статье Пол Рендал.
BI and DWH от Евгения Полоничко
Лето пришло, а значит пора заниматься самообразованием. Итак, курсы по BI и все, что с ним связано:
Питер Майерс и его замечательный курс Developing a SQL Server Analysis Services Tabular Data Model. Питер очень крутой профи в области BI, но самое главное объясняет очень доступно. Кстати, он приезжал в Киев и выступал у нас уже два раза.
Следующий курс от маэстро SSAS Альберто Ferrari и Марко Руссо — Introducing DAX. Этот курс даст вам основы работы с языком DAX, который используется для SSAS Tabular, Power BI и т. д.
Это курсуже по Data Science от компании Microsoft.
Вдогонку к предыдущему у Microsoft есть целая программапо подготовке Data Scientists.
Ну а теперь, то, что можно просто почитать или посмотреть:
Power BI dashboard best practices by Marco Russo:
Обновленная архитектура Power BI от Dustin Ryan. Кстати, там много чего интересного есть по Power BI.
Интересная статьяна сайте Hortonworks об очень, очень быстрой Олап-аналитике.
Очень интересный посто построение модели Azure Analysis Services для Azure Blob Storage, то есть источник данных — блобы.
Хотите попробовать, что это за зверь Azure SSAS? Вот здесь Microsoft даже для вас примеры подготовил.
Конечно же, DWH раздел не может быть без ETL. Интересно? Заходите, знакомьтесь: Azure Data Factory.
← Предыдущий выпуск: SQL Server дайджест #13