Чему вы научитесь
- Объяснять, как физически устроены индексы (B-tree, Hash и другие) и почему поиск по индексу быстрее полного перебора
- Определять, когда индекс реально ускоряет запрос, а когда вредит — замедляет запись и занимает место впустую
- Читать планы выполнения EXPLAIN и EXPLAIN ANALYZE: отличать seq scan от index scan, видеть стоимость и реальное время
- Находить и устранять SQL-антипаттерны, из-за которых оптимизатор не может использовать индекс
- Оптимизировать медленные запросы: переписывать их, подбирать индексы и проверять результат замерами на данных в миллионы строк
- Применять транзакции и объяснять свойства ACID — почему данные остаются целыми даже при сбое посреди операции
- Выбирать уровень изоляции под задачу и распознавать аномалии: грязное, неповторяемое чтение и фантомы
- Объяснять работу блокировок и MVCC (многоверсионности) — почему читатели не блокируют писателей
- Сравнивать поведение механизмов в MySQL и PostgreSQL и осознанно переносить решения между СУБД
О курсе
Для кого этот курс
Начальные требования
Курс продвинутый — он рассчитан на тех, кто уже уверенно пишет SQL.
— Нужен уверенный SQL: сложные запросы, все виды JOIN, подзапросы и CTE, агрегация и группировка.
— Желательно понимать основы проектирования БД: таблицы, ключи, ограничения, базовый DDL.
— Полезны усидчивость и готовность экспериментировать: курс про механизмы, и многое становится понятным, только когда вы сами смотрите план выполнения и сравниваете замеры.
— Ничего устанавливать не нужно: SQL-задачи решаются и проверяются прямо на платформе на MySQL 8. PostgreSQL понадобится только для опциональных локальных 🐘-заданий — и только если захотите. Если со сложными запросами, подзапросами или проектированием базы вы пока не дружите, начните с предыдущих ступеней линейки: «SQL для аналитика: подзапросы, CTE и продвинутые функции», «SQL: оконные функции от и до» и «Проектирование и управление базами данных». После них этот курс зайдёт легко.
Преподаватели курса
Как проходит обучение
Обучение полностью онлайн и в своём темпе — без жёстких дедлайнов. Курс текстово-интерактивный, видео нет.
— Короткие текстовые лекции с примерами и разбором частых ошибок. Механизмы разбираются двухслойно: и на MySQL, и на PostgreSQL — вы видите, где поведение совпадает, а где отличается.
— Наглядные диаграммы к ключевым темам: устройство B-tree, чтение вывода EXPLAIN и таймлайны параллельных сессий, на которых видно, как возникает аномалия изоляции.
— SQL-задачи с автоматической проверкой на MySQL 8 (InnoDB) прямо в браузере: пишете запрос — система сразу сверяет результат. Часть задач — оптимизационные, на нагрузочных таблицах big_* в миллионы строк.
— Опциональные локальные 🐘-задания по PostgreSQL-специфике, которую нельзя проверить на MySQL, — для тех, кто хочет глубже; с парным MySQL-обходом.
— Интерактивные тесты к каждому разделу — закрепляют понимание механизмов, а не зубрёжку.
— Поддержка автора в комментариях к шагам и обсуждения под каждым шагом — разбор решений и вопросов вместе с другими учащимися.
Логика курса — от простого к сложному, с ранней практической победой: сначала короткая теория и наглядный пример, затем тест на понимание и блок SQL-задач, чтобы навык закрепился.
Что вы получите
- — Востребованный навык уровня Middle: чтение планов, оптимизация запросов, индексы, транзакции, изоляция и MVCC — то, что реально спрашивают на собеседованиях и ждут на проде.
- — Практику на реалистичной нагрузке: SQL-задачи с автопроверкой на демо-данных accounts и нагрузочных таблицах big_* в миллионы строк — оптимизацию вы отрабатываете на объёмах, похожих на боевые.
- — Понимание сразу двух СУБД: механизмы разобраны и на MySQL, и на PostgreSQL, плюс опциональные 🐘-задания для углубления.
- — Поддержку автора в комментариях и обсуждения под шагами: вопросы не остаются без ответа.
- — Доступ в своём темпе — возвращайтесь к материалам и пересдавайте задания сколько нужно.
- — Сертификат Stepik по итогам прохождения курса.
- — Готовность двигаться выше по линейке — к VIEW, хранимым функциям, процедурам, триггерам и безопасности в курсе «Серверное программирование в MySQL».