Чему вы научитесь
- Объяснять, как физически устроены индексы (B-tree, Hash и другие) и почему поиск по индексу быстрее полного перебора
- Определять, когда индекс реально ускоряет запрос, а когда вредит — замедляет запись и занимает место впустую
- Читать планы выполнения EXPLAIN и EXPLAIN ANALYZE: отличать seq scan от index scan, видеть стоимость и реальное время
- Находить и устранять SQL-антипаттерны, из-за которых оптимизатор не может использовать индекс
- Оптимизировать медленные запросы: переписывать их, подбирать индексы и проверять результат замерами на данных в миллионы строк
- Применять транзакции и объяснять свойства ACID — почему данные остаются целыми даже при сбое посреди операции
- Выбирать уровень изоляции под задачу и распознавать аномалии: грязное, неповторяемое чтение и фантомы
- Объяснять работу блокировок и MVCC (многоверсионности) — почему читатели не блокируют писателей
- Сравнивать поведение механизмов в MySQL и PostgreSQL и осознанно переносить решения между СУБД
О курсе
Это флагманский курс линейки — тот рубеж, после которого вы перестаёте писать SQL «на удачу» и начинаете понимать, что происходит внутри СУБД, когда вы нажимаете «выполнить». Цель курса — показать базу данных изнутри: как индексы ускоряют (или незаметно тормозят) запросы, как читать планы выполнения, как чинить медленные запросы и как транзакции с изоляцией и блокировками удерживают данные целыми, когда с базой одновременно работают десятки сессий.
Почему стоит выбрать именно его. Большинство курсов заканчиваются на том, что запрос «возвращает правильный результат». Здесь начинается следующий вопрос — а почему он работает 40 секунд вместо 40 миллисекунд и что с этим делать. Курс построен вокруг реалистичной нагрузки: демо-данные accounts и нагрузочные таблицы big_* на миллионы строк. На таких объёмах разница между плохим и хорошим планом видна сразу — в реальных цифрах времени и стоимости, а не на игрушечных трёх строках.
Двухслойный диалект — честно. Движок автопроверки на Stepik для всей линейки — MySQL 8.0 (InnoDB), и автопроверяемые SQL-задачи вы решаете именно на нём, прямо в браузере. При этом лекции разбирают механизмы в двух СУБД сразу — «вторым голосом» показывают, как то же самое устроено в PostgreSQL: где совпадает, а где принципиально иначе (например, реализация MVCC). PostgreSQL-специфика, которой нет в MySQL, вынесена в отдельные локальные 🐘-задания — их вы при желании выполняете у себя на PostgreSQL, с парным MySQL-обходом. Так вы получаете не «один диалект для галочки», а понимание принципов, которые переносятся между движками. Курс текстово-интерактивный: лекции, тесты и практика, без видео.
Что вы приобретёте. После курса вы умеете диагностировать медленный запрос по плану выполнения, осознанно расставлять индексы, объяснять разницу между уровнями изоляции и не бояться слов «блокировка», «фантомное чтение» и «MVCC» на собеседовании. Это навыки уровня, который отделяет того, кто «умеет писать SQL», от того, кто понимает, как СУБД работает под капотом.
Особенности курса. Теория разбита на короткие шаги с примерами и разбором частых ошибок. К ключевым темам — наглядные диаграммы: как устроено B-tree, как читается вывод EXPLAIN, и таймлайны параллельных сессий, на которых видно, как именно возникает аномалия изоляции. SQL-задачи проверяются автоматически, тесты закрепляют каждый раздел, а сквозная учебная база и нагрузочные big_* дают практику, похожую на продакшен.
Что нужно будет делать: читать короткие лекции, проходить тесты на понимание, решать SQL-задачи с автопроверкой в браузере, экспериментировать с планами выполнения и замерами, разбирать свои ошибки. Всё — на платформе, ничего устанавливать не нужно (PostgreSQL для 🐘-заданий — опционально и по желанию).
Из чего состоит курс. Индексы: как устроены B-tree и Hash, когда индекс помогает и когда вредит → чтение планов выполнения EXPLAIN и EXPLAIN ANALYZE → оптимизация медленных запросов и SQL-антипаттерны → транзакции и свойства ACID → уровни изоляции и аномалии (грязное, неповторяемое чтение, фантомы) → блокировки → MVCC и многоверсионность. Каждая тема — это теория короткими шагами, ранняя практическая победа, тесты на понимание и блок SQL-задач.
Вход на курс — после ступеней «SQL для аналитика: подзапросы, CTE и продвинутые функции», «SQL: оконные функции от и до» и «Проектирование и управление базами данных». Следующая ступень — «Серверное программирование в MySQL».
Для кого этот курс
Начальные требования
Курс продвинутый — он рассчитан на тех, кто уже уверенно пишет 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».