Источник
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
