System Design Space
Граф знанийНастройки

Обновлено: 2 мая 2026 г. в 21:32

MySQL: история, движки хранения и масштабирование

средний

История MySQL, роль в LAMP-стеке, InnoDB и другие движки хранения, DDL/DML-путь запроса, репликация, MySQL Cluster, Vitess и эксплуатационные границы платформы.

История MySQL важна не только как классика LAMP-эпохи. Она хорошо показывает, как массовая СУБД эволюционирует через движки хранения, репликацию и платформенные надстройки вроде Vitess.

В инженерной практике глава помогает связать поведение InnoDB, кластеризованных индексов, реплик для чтения и отставания репликации с конкретным профилем нагрузки.

На интервью и архитектурных ревью она помогает честно проговорить границы: где MySQL полностью закрывает транзакционную задачу, а где межрегиональность, тяжёлая аналитика или строгий горизонтальный рост подталкивают к другим вариантам.

Практическая польза главы

Дизайн с учётом движка

Учитывайте особенности InnoDB и кластеризованных индексов при моделировании таблиц, ключей и транзакций.

Стратегия масштабирования чтения

Проектируйте реплики для чтения и переключение на резерв с учётом отставания репликации и требований к консистентности.

Эволюция схемы

Планируйте онлайн-изменения схемы и обратно совместимые миграции, чтобы не ломать высоконагруженную систему.

Позиция на интервью

Показывайте, когда MySQL достаточно, а когда нужны альтернативы для межрегиональных или аналитических нагрузок.

Источник

MySQL

История MySQL, LAMP-стек, движки хранения, репликация и экосистема масштабирования.

Перейти на сайт

MySQL - это и , которую чаще всего рассматривают как транзакционную основу веб-приложений. Важные решения здесь завязаны на , и .

Эксплуатационная часть MySQL строится вокруг , , , и понятного пути к .

Для проектирования схемы важны , , и .

MySQL — одна из самых популярных реляционных СУБД. Она начиналась как простой и быстрый движок, стала частью LAMP-стека, а затем получила транзакционные возможности, гибкую модель движков хранения и экосистему масштабирования.

История и вехи развития

1995

Первый релиз MySQL

23 мая 1995 года выходит первый релиз MySQL; проект быстро набирает популярность в веб-приложениях.

2000

MySQL AB и двойная лицензия

Формируется компания MySQL AB и модель, где GPL сочетается с коммерческой лицензией для корпоративных сценариев.

2003 (4.0)

MySQL 4.0

Платформа становится зрелее для массовых веб-приложений, а MySQL закрепляется как часть LAMP-стека.

2005 (5.0)

MySQL 5.0

Появляются хранимые процедуры, триггеры и представления — важный шаг к более зрелой SQL-модели.

2008

Покупка Sun Microsystems

Sun приобретает MySQL AB и получает контроль над одним из ключевых SQL-продуктов с открытым исходным кодом.

2009-2010

Ответвление MariaDB и переход к Oracle

На фоне сделки Sun и Oracle появляется MariaDB; в 2010 году Oracle завершает покупку Sun.

2010 (5.5)

InnoDB становится движком по умолчанию

В ветке MySQL 5.5 InnoDB становится основным движком хранения, усиливая транзакционные гарантии MySQL.

2013 (5.6)

MySQL 5.6

Улучшаются репликация и эксплуатационные возможности, включая идентификаторы транзакций и производительность InnoDB.

2015 (5.7)

MySQL 5.7

Добавляются JSON-функции, вычисляемые столбцы и улучшения оптимизатора для смешанного профиля нагрузки.

2018 (8.0)

MySQL 8.0

Крупное обновление: CTE, оконные функции, транзакционный словарь данных и дальнейшая модернизация ядра.

2024+ (8.4 LTS)

Новая модель релизов

Появляется LTS-линейка (8.4), а развитие идет через innovation-ветки и последующие мажорные релизы.

MySQL в LAMP-стеке

LAMP — классический стек для веб-приложений: Linux + Apache + MySQL + PHP/Perl/Python.

L

Linux

Операционная система для серверов и веб-хостинга.

A

Apache

Веб-сервер, обслуживающий запросы приложения.

M

MySQL

Реляционная база данных для хранения и обработки данных.

P

PHP / Perl / Python

Языки серверной логики и шаблонов приложения.

Архитектура MySQL по слоям

Классическая архитектура MySQL делит ответственность между клиентским слоем, SQL-слоем, движками хранения и системным уровнем ОС/файловой системы.

Клиенты и соединения
MySQL protocolJDBC / ODBCАутентификация + TLSПул соединений
Переход между слоями
SQL-слой
Разбор запросаОптимизаторИсполнительМетаданныеПрава доступа
Переход между слоями
Движки хранения
InnoDBMyISAMNDBMemory/CSV
Переход между слоями
ОС и инфраструктура
ОСФайловая системаДискСеть
Сервисные подсистемы

Дополнительные подсистемы работают вокруг основных слоёв и обеспечивают надёжность, репликацию и наблюдаемость.

Журналы

Двоичный журналRedo/Undo (InnoDB)

Наблюдаемость

Performance SchemaInformation SchemaМетрики состояния

Репликация

Ведущий узел и репликиПолусинхронный режимGTID

DDL и DML: как проходит запрос

DDL меняет схему и метаданные, а DML работает с данными и индексами. Ниже — визуализация ключевых этапов для обоих типов запросов.

Как запрос проходит через MySQL

Сравнение цепочки для DDL (структура) и DML (данные)

Интерактивный прогонШаг 1/5

Активный шаг

1. Разбор и оптимизация

Оптимизатор строит план выполнения и выбирает индексы.

Работа с данными

  • DML затрагивает данные и индексы, но не меняет структуру.
  • Основная нагрузка — кеш, журналы и блокировки строк.
  • Часто оптимизируется через индексы и выбор плана.
Операции со строкамиДвоичный журналФиксация транзакции

Эволюция движков хранения

MySQL поддерживает несколько движков хранения, позволяя выбирать подходящий для разных типов таблиц.

InnoDB (по умолчанию)

Транзакционный движок хранения с поддержкой строгих гарантий, внешних ключей, журналов Redo/Undo и кластеризованных индексов.

MyISAM (устаревающий)

Исторический движок хранения без полноценных транзакционных гарантий; полезен скорее для понимания эволюции MySQL.

NDB Cluster

Движок для MySQL Cluster с распределённым хранением, где узлы не делят общий диск и координируют данные между собой.

В списке встроенных движков также есть Memory, Archive, CSV, Federated, Blackhole и другие.

Документация

Vitess: шардирование для MySQL

Как Vitess делит ключевое пространство на шарды и маршрутизирует запросы к MySQL.

Перейти на сайт

Масштабирование: репликация, MySQL Cluster и Vitess

Репликация

Встроенная репликация поддерживает асинхронный и полусинхронный режимы, помогает разгружать чтение и готовить переключение на резерв.

MySQL Cluster (NDB)

Кластерный вариант на базе NDB, где данные распределяются между узлами без общего хранилища.

Vitess

Слой маршрутизации и шардирования: ключевое пространство делится на шарды MySQL, а у каждого шарда есть ведущий узел и реплики.

Вариант архитектуры с Vitess: запросы проходят через слой маршрутизации к нескольким шардам MySQL.

Клиенты

Приложения

Маршрутизация

VTGate

MySQL

Шарды

Ведущий узел и реплики

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки