История MySQL важна не только потому, что это классика LAMP-эпохи, а потому что она хорошо показывает, как массовая СУБД эволюционирует через storage engines, репликацию и платформенные надстройки вроде Vitess.
В инженерной практике глава полезна, когда нужно увязать поведение InnoDB, clustered index, read replicas и лаг репликации с конкретной моделью нагрузки, а не обсуждать MySQL как абстрактную реляционную систему.
На интервью и в архитектурных ревью она помогает честно проговорить границы: где MySQL полностью закрывает OLTP-задачу, а где multi-region, сложная аналитика или жесткие требования к горизонтальному росту подталкивают к другим вариантам.
Практическая польза главы
Engine-aware design
Учитывайте особенности InnoDB и clustered index при моделировании таблиц, ключей и транзакционных сценариев.
Read-scale стратегия
Стройте read replicas и topology failover с учетом lag и требований к консистентности чтений.
Эволюция схемы
Планируйте online-migrations и backward-compatible изменения, чтобы не ломать высоконагруженный прод.
Interview позиция
Показывайте, когда MySQL достаточно, а когда нужны альтернативы для multi-region или аналитических нагрузок.
Источник
MySQL
История MySQL, LAMP-стек, эволюция версий и ключевые особенности.
MySQL — одна из самых популярных реляционных СУБД. Она начиналась как простой и быстрый движок, стала частью LAMP-стека, а затем получила транзакционные возможности, гибкую модель storage engines и экосистему масштабирования.
История и вехи развития
Первый релиз MySQL
Публикуется первый релиз MySQL (23 мая 1995), проект начинает быстро набирать популярность в web-нагрузках.
MySQL AB и dual licensing
Формируется компания MySQL AB и модель GPL + коммерческая лицензия для enterprise-сценариев.
MySQL 4.0
Стабилизируется платформа для массового web-use-case; MySQL закрепляется как часть LAMP-стека.
MySQL 5.0
Появляются stored procedures, triggers и views — важный шаг к более зрелой SQL-модели.
Покупка Sun Microsystems
Sun приобретает MySQL AB и получает контроль над одним из ключевых open-source SQL-продуктов.
Fork в MariaDB и переход к Oracle
На фоне сделки Sun/Oracle запускается форк MariaDB; в 2010 Oracle завершает покупку Sun.
InnoDB становится default
В ветке MySQL 5.5 движок InnoDB становится основным по умолчанию, усиливая ACID-позиционирование.
MySQL 5.6
Улучшаются репликация и эксплуатационные возможности (в том числе GTID и производительность InnoDB).
MySQL 5.7
Добавляются JSON-функции, generated columns и улучшения оптимизатора для mixed workload.
MySQL 8.0
Крупный технологический апдейт: CTE, window functions, transactional data dictionary и дальнейшая модернизация ядра.
Новая модель релизов
Появляется LTS-линейка (8.4), а развитие идет через innovation-ветки и последующие мажорные релизы.
MySQL в LAMP-стеке
LAMP — классический стек для веб-приложений: Linux + Apache + MySQL + PHP/Perl/Python.
Linux
Операционная система для серверов и веб-хостинга.
Apache
HTTP-сервер, обслуживающий веб-запросы.
MySQL
Реляционная база данных для хранения и обработки данных.
PHP / Perl / Python
Языки серверной логики и шаблонов приложения.
Архитектура MySQL по слоям
Классическая архитектура MySQL делит ответственность между клиентским слоем, SQL-слоем, storage engines и системным уровнем ОС/файловой системы.
Дополнительные подсистемы работают вокруг основных слоёв и обеспечивают надежность, репликацию и наблюдаемость.
Журналы
Наблюдаемость
Replication
DDL vs DML: как проходит запрос
DDL меняет схему и метаданные, а DML работает с данными и индексами. Ниже — визуализация ключевых этапов для обоих типов запросов.
Как запрос проходит через MySQL
Сравнение цепочки для DDL (структура) и DML (данные)
Активный шаг
1. Parse + optimize
Оптимизатор строит план выполнения и выбирает индексы.
Работа с данными
- DML затрагивает данные и индексы, но не меняет структуру.
- Основная нагрузка — кеш, журналы и блокировки строк.
- Часто оптимизируется через индексы и выбор плана.
Эволюция storage engines
MySQL поддерживает несколько движков хранения, позволяя выбирать подходящий для разных типов таблиц.
InnoDB (default)
Транзакционный движок с поддержкой ACID и внешних ключей; в MySQL 5.5 дефолтный storage engine — InnoDB.
MyISAM (legacy)
Один из встроенных storage engines MySQL, доступный наряду с другими движками.
NDB Cluster
Движок для MySQL Cluster: shared-nothing кластеризация.
Документация
Vitess: sharding для MySQL
Как Vitess делит keyspace на шарды и маршрутизирует запросы к MySQL.
Масштабирование: репликация, Cluster, Vitess
Репликация
Встроенная репликация поддерживает асинхронные и semi-sync сценарии для масштабирования чтений.
MySQL Cluster (NDB)
Shared-nothing кластеризация через MySQL Cluster на базе NDB-движка.
Vitess
Слой шардирования: ключевое пространство может быть разбито на шардированные MySQL-базы, где у каждого шарда есть primary и реплики.
Вариант архитектуры с Vitess: запросы идут через слой маршрутизации к нескольким MySQL-шарам.
Клиенты
Приложения
Маршрутизация
VTGate
MySQL
Шарды
Primary + replicas
Связанные главы
- Database Selection Framework - Как позиционировать MySQL среди других СУБД в зависимости от workload, SLA и операционных ограничений.
- PostgreSQL: история и архитектура - Сравнение двух OLTP-платформ: модель расширяемости, транзакционная семантика и эксплуатационные trade-offs.
- Репликация и шардинг - Практика масштабирования MySQL через read replicas, failover, шардирование и rebalancing.
- Введение в хранение данных - Как решения по хранению данных связаны с API-контрактами и эволюцией архитектуры продукта.
- Designing Data-Intensive Applications (short summary) - Теоретическая база по транзакциям, репликации и консистентности для осознанного выбора SQL-архитектуры.
- Путеводитель по базам данных (short summary) - Практическое руководство по SQL и архитектуре СУБД, которое дополняет обзор MySQL прикладным контекстом.
