История MySQL важна не только как классика LAMP-эпохи. Она хорошо показывает, как массовая СУБД эволюционирует через движки хранения, репликацию и платформенные надстройки вроде Vitess.
В инженерной практике глава помогает связать поведение InnoDB, кластеризованных индексов, реплик для чтения и отставания репликации с конкретным профилем нагрузки.
На интервью и архитектурных ревью она помогает честно проговорить границы: где MySQL полностью закрывает транзакционную задачу, а где межрегиональность, тяжёлая аналитика или строгий горизонтальный рост подталкивают к другим вариантам.
Практическая польза главы
Дизайн с учётом движка
Учитывайте особенности InnoDB и кластеризованных индексов при моделировании таблиц, ключей и транзакций.
Стратегия масштабирования чтения
Проектируйте реплики для чтения и переключение на резерв с учётом отставания репликации и требований к консистентности.
Эволюция схемы
Планируйте онлайн-изменения схемы и обратно совместимые миграции, чтобы не ломать высоконагруженную систему.
Позиция на интервью
Показывайте, когда MySQL достаточно, а когда нужны альтернативы для межрегиональных или аналитических нагрузок.
Источник
MySQL
История MySQL, LAMP-стек, движки хранения, репликация и экосистема масштабирования.
MySQL - это и , которую чаще всего рассматривают как транзакционную основу веб-приложений. Важные решения здесь завязаны на , и .
Эксплуатационная часть MySQL строится вокруг , , , и понятного пути к .
Для проектирования схемы важны , , и .
MySQL — одна из самых популярных реляционных СУБД. Она начиналась как простой и быстрый движок, стала частью LAMP-стека, а затем получила транзакционные возможности, гибкую модель движков хранения и экосистему масштабирования.
История и вехи развития
Первый релиз MySQL
23 мая 1995 года выходит первый релиз MySQL; проект быстро набирает популярность в веб-приложениях.
MySQL AB и двойная лицензия
Формируется компания MySQL AB и модель, где GPL сочетается с коммерческой лицензией для корпоративных сценариев.
MySQL 4.0
Платформа становится зрелее для массовых веб-приложений, а MySQL закрепляется как часть LAMP-стека.
MySQL 5.0
Появляются хранимые процедуры, триггеры и представления — важный шаг к более зрелой SQL-модели.
Покупка Sun Microsystems
Sun приобретает MySQL AB и получает контроль над одним из ключевых SQL-продуктов с открытым исходным кодом.
Ответвление MariaDB и переход к Oracle
На фоне сделки Sun и Oracle появляется MariaDB; в 2010 году Oracle завершает покупку Sun.
InnoDB становится движком по умолчанию
В ветке MySQL 5.5 InnoDB становится основным движком хранения, усиливая транзакционные гарантии MySQL.
MySQL 5.6
Улучшаются репликация и эксплуатационные возможности, включая идентификаторы транзакций и производительность InnoDB.
MySQL 5.7
Добавляются JSON-функции, вычисляемые столбцы и улучшения оптимизатора для смешанного профиля нагрузки.
MySQL 8.0
Крупное обновление: CTE, оконные функции, транзакционный словарь данных и дальнейшая модернизация ядра.
Новая модель релизов
Появляется LTS-линейка (8.4), а развитие идет через innovation-ветки и последующие мажорные релизы.
MySQL в LAMP-стеке
LAMP — классический стек для веб-приложений: Linux + Apache + MySQL + PHP/Perl/Python.
Linux
Операционная система для серверов и веб-хостинга.
Apache
Веб-сервер, обслуживающий запросы приложения.
MySQL
Реляционная база данных для хранения и обработки данных.
PHP / Perl / Python
Языки серверной логики и шаблонов приложения.
Архитектура MySQL по слоям
Классическая архитектура MySQL делит ответственность между клиентским слоем, SQL-слоем, движками хранения и системным уровнем ОС/файловой системы.
Дополнительные подсистемы работают вокруг основных слоёв и обеспечивают надёжность, репликацию и наблюдаемость.
Журналы
Наблюдаемость
Репликация
DDL и DML: как проходит запрос
DDL меняет схему и метаданные, а DML работает с данными и индексами. Ниже — визуализация ключевых этапов для обоих типов запросов.
Как запрос проходит через MySQL
Сравнение цепочки для DDL (структура) и DML (данные)
Активный шаг
1. Разбор и оптимизация
Оптимизатор строит план выполнения и выбирает индексы.
Работа с данными
- DML затрагивает данные и индексы, но не меняет структуру.
- Основная нагрузка — кеш, журналы и блокировки строк.
- Часто оптимизируется через индексы и выбор плана.
Эволюция движков хранения
MySQL поддерживает несколько движков хранения, позволяя выбирать подходящий для разных типов таблиц.
InnoDB (по умолчанию)
Транзакционный движок хранения с поддержкой строгих гарантий, внешних ключей, журналов Redo/Undo и кластеризованных индексов.
MyISAM (устаревающий)
Исторический движок хранения без полноценных транзакционных гарантий; полезен скорее для понимания эволюции MySQL.
NDB Cluster
Движок для MySQL Cluster с распределённым хранением, где узлы не делят общий диск и координируют данные между собой.
Документация
Vitess: шардирование для MySQL
Как Vitess делит ключевое пространство на шарды и маршрутизирует запросы к MySQL.
Масштабирование: репликация, MySQL Cluster и Vitess
Репликация
Встроенная репликация поддерживает асинхронный и полусинхронный режимы, помогает разгружать чтение и готовить переключение на резерв.
MySQL Cluster (NDB)
Кластерный вариант на базе NDB, где данные распределяются между узлами без общего хранилища.
Vitess
Слой маршрутизации и шардирования: ключевое пространство делится на шарды MySQL, а у каждого шарда есть ведущий узел и реплики.
Вариант архитектуры с Vitess: запросы проходят через слой маршрутизации к нескольким шардам MySQL.
Клиенты
Приложения
Маршрутизация
VTGate
MySQL
Шарды
Ведущий узел и реплики
Связанные главы
- Фреймворк выбора СУБД - Как позиционировать MySQL среди других СУБД с учётом профиля нагрузки, требований к уровню сервиса и операционных ограничений.
- PostgreSQL: история и архитектура - Сравнение двух платформ транзакционной обработки: расширяемость, транзакционная семантика и эксплуатационные компромиссы.
- Репликация и шардинг - Практика масштабирования MySQL через реплики для чтения, переключение на резерв, шардирование и перебалансировку.
- Введение в хранение данных - Как решения по хранению данных связаны с API-контрактами и эволюцией архитектуры продукта.
- Designing Data-Intensive Applications, 2nd Edition (short summary) - Теоретическая база по транзакциям, репликации и консистентности для осознанного выбора SQL-архитектуры.
- Путеводитель по базам данных (short summary) - Практическое руководство по SQL и архитектуре СУБД, которое дополняет обзор MySQL прикладным контекстом.
