Во время курса будем подробно разбирать язык запросов и внутренние процессы СУБД, происходящие на всех этапах работы с запросом. Курс позволит понять детали процессов и получить чёткое представление, что делает тот или иной код, где могут возникнуть потенциальные проблемы, как их можно разрешить. Подробно рассмотрим оптимизацию кода, как нужно писать, если у вас миллиарды данных, расскажем о популярных граблях, чтобы вы смогли их обойти.
Этот курс предназначен для:
разработчиков с опытом работы с базами на уровне «делал и использовал, но как внутри работает не знаю» (например, через ORM);
разработчиков с небольшим опытом работы с базами данных и желанием продвинуться дальше.
После обучения вы сможете:
разрабатывать на SQL;
проектировать БД и понимать все нюансы;
анализировать и оптимизировать производительности запросов;
писать сложные хранимые процедуры, функции и триггеры;
читать план запроса.
Минимальные знания. Этот курс вам подойдёт, если вы:
работали с БД и знаете, как они выглядят
писали или читали простые запросы
знаете типы данных и основные операторы на базовом уровне
или являетесь выпускником курса «Реляционные СУБД»
Программа обучения:
Модуль 1. Использование БД. Учимся использовать SQL Server, изучаем нюансы диалекта SQL и планы запросов.
Тема 1. Базы данных и какие они бывают
узнать про разные виды систем управления баз данных и самих БД
уметь выбрать где и какой вид лучше использовать
узнать про новые возможностях SQL server
развернуть бэкап учебной базы
Тема 2. Оператор SELECT и простые фильтры
научиться делать выборки используя оператор SELECT
использовать простые фильтры в WHERE и объединение условий
попробовать разные виды JOIN
разобраться с тем как читать планы запросов
Тема 3. Подзапросы и WITH в SQL
писать запросы с использованием подзапросов
рассказать, что будет в результате выполнения запроса, без его запуска
Тема 4. Введение в планы запросов
читать и объяснять план запроса
оценивать разные запросы и сравнивать их стоимость
Тема 5. GROUP BY и HAVING. Временные таблицы и табличные переменные
писать запрос с использованием GROUP BY и HAVING,
писать запрос с Cube и Rollup
перечислить отличие HAVING и WHERE
создавать временные таблицы и табличные переменные,
объяснять разницу между этими объектами
Тема 6. SQL операторы изменения данных
уметь определить к чему относится оператор к DDL или DML
использовать операторы INSERT, UPDATE, UPSERT, DELETE, MERGE, Bulk insert
использовать утилиту bcp
Тема 7. Оконные функции в SQL
писать запросы с использованием оконных функций
проходить тест по оконным функциям
Тема 8. Операторы CROSS APPLY, PIVOT, CUBE
писать запросы с использованием CROSS APPLY, PIVOT и UNPIVOT, описывать значение операторов
Тема 9. Итоговое занятие по SELECT
перечислять этапы выполнения запроса
читать длинные запросы и рассказывать что должно получится после выполнения, без выполнения запроса
Тема 10. Операторы DDL
создавать объекты БД с помощью своих SQL запросов
Тема 11. Выборки из xml и json полей
писать выборки из xml полей
писать выборки из json полей
Тема 12. Динамический SQL
создавать процедуры с использованием динамического SQL,
перечислять ошибки при использовании динамического SQL которые ведут к угрозам безопасности
объяснить как можно сохранять план запроса по динамическому SQL
Тема 13. Уровни изоляции транзакций
объяснять разницу в уровнях изоляции транзакций,
проходить тест по тому какой уровень когда нужно применять
объяснять какие блокировки каждый уровень накладывает
создавать процедуры с обработкой ошибок на SQL
Тема 14. Хранимые процедуры и функции
создавать хранимые процедуры и функции
объяснять различия
объяснять хранение плана запроса по процедурам, функциям и запросам
объяснять что такое триггер и как его создавать, в каких случаях они нужны
Тема 15. Создание и использование CLR
cоздавать процедуры с использованием CLR
Модуль 2. Проектирование БД. Лучшие и худшие практики проектирования БД, начинаем делать свою проектную работу.
Тема 1. Проектирование БД
проектировать БД
нормализовывать таблицы
Тема 2. Подходы к проектированию БД
проектировать БД исходя из требований
учитывать аспекты безопасности при проектировании БД
Тема 3. Индексы
создавать индексы
определять какие индексы не нужны
Тема 4. Проектируем БД для OLTP нагрузки. Почему важно разделить OLTP и OLAP.
различать OLTP и OLAP
проектировать БД для OLTP нагрузки
Тема 5. Проектирование хранилищ данных и OLAP систем
проектировать хранилища данных
Тема 6. Семинар по созданным проектам БД
обсудить и получить обратную связь по проекту
Модуль 3. Оптимизация и Администрирование БД. Продолжаем изучать оптимизацию запросов и базы в SQL Server. Подходы и практики администрирования БД.
Тема 1. Планы запросов, а теперь подробнее.
анализировать план запроса и делать выводы как проводить оптимизацию
интерпретировать статистики по времени и вводу выводу
определять parameter sniffing и устранять его
Тема 2. DMV в SQL Server
различать разные DMV
использовать DMV для работы
Тема 3. Оптимизация работы базы данных
находить проблемные места в работе сервера БД
находить и устранять запросы, которые нагружают сервер БД
интерпретировать информацию из Activity Monitor и делать выводы о характере нагрузки
использовать профайлер для нахождения ресурсоемких запросов
использовать механизм extended events
Тема 4. Популярные Hint'ы и подсказки оптимизатору
перечислить в каких случаях какие хинты нужно и можно применять
понимать минусы и плюсы использования хинтов и принимать решения о целесообразности их использования
Тема 5. Семинар. Оптимизация сложных запросов
оптимизировать запрос
анализировать план запроса
анализировать и принимать решения по оптимизации статистики ввода вывода по запросу
Тема 6. Еще раз об индексах
обновлять статистику
создавать недостающие индексы
находить и удалять неиспользующиеся индексы
обслуживать индексы
Тема 7. Резервное копирование и восстановление
создавать backup базы данных
делать восстановление из бэкапа
Тема 8. Репликация данных, Job'ы и SQL Agent
настраивать репликацию
выбирать нужный вид репликации
Тема 9. Очереди в MS SQL Server
создавать очереди в SQL Server
Тема 10. Секционирование таблиц
определять когда нужно секционировать таблицы
секционировать таблицы
Тема 11. Безопасность в SQL Server
Немного про пользователей и политики безопасности в SQL Server.