Открыть сервис

MySQL 8

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

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

Первая публичная версия MySQL была выпущена в 1995 году шведской компанией MySQL AB. В 2008 году компания была приобретена Sun Microsystems, а в 2010 году, после поглощения Sun, MySQL перешла под контроль корпорации Oracle. До выхода версии 8 основные обновления долгое время выпускались в рамках ветки 5.x (MySQL 5.0 — 2005 год, MySQL 5.7 — 2015 год).

Разработка MySQL 8 началась вскоре после стабилизации MySQL 5.7. Ключевым этапом стал выпуск версии 8.0.0 (иногда называемой Development Milestone Release) в сентябре 2016 года. Полный функционал и официальный статус General Availability (GA) были объявлены 19 апреля 2018 года. Нумерация была «перескочена» с 5.7 на 8.0, чтобы подчеркнуть фундаментальный характер изменений и разрыв обратной совместимости в ряде подсистем.

Архитектура и ключевые нововведения

MySQL 8 отличается от предыдущих версий переработанной архитектурой хранения данных и новым словарём данных (Data Dictionary).

Словарь данных

В MySQL 8 был внедрён словарь данных на основе InnoDB. Ранее метаданные таблиц (структура, определения) хранились в файлах с расширением .frm. В версии 8 вся информация об объектах базы данных (таблицы, представления, хранимые процедуры) хранится внутри транзакционных таблиц InnoDB. Это позволило:

Механизм хранения InnoDB

InnoDB остаётся основным и рекомендуемым механизмом (storage engine). В MySQL 8 он получил существенные улучшения:

Индексы и производительность

Новые возможности SQL

MySQL 8 значительно расширил стандарт SQL, приблизившись к возможностям коммерческих СУБД, таких как Oracle Database или PostgreSQL.

Оконные функции (Window Functions)

Введены оконные функции: ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG(), FIRST_VALUE(), LAST_VALUE(), NTILE(), PERCENT_RANK(), CUME_DIST(). Они позволяют выполнять вычисления над наборами строк (окнами) без группировки результата в одну строку.

Общие табличные выражения (Common Table Expressions, CTE)

Реализован синтаксис WITH ... AS (...) как нерекурсивных (например, для упрощения сложных подзапросов), так и рекурсивных CTE. Рекурсивные CTE позволяют эффективно работать с иерархическими данными (например, с деревьями категорий или организационной структурой).

Функции для JSON

Расширена поддержка работы с JSON-документами: добавлены функции JSON_TABLE() (преобразует JSON в реляционную таблицу), JSON_ARRAYAGG(), JSON_OBJECTAGG(), а также улучшена производительность операций поиска внутри JSON-столбцов за счёт виртуальных индексов.

Типы данных

Безопасность и аутентификация

Механизм аутентификации

По умолчанию используется плагин caching_sha2_password (заменивший mysql_native_password). Он обеспечивает более надёжное хранение паролей и защиту от атак перебором. Для обратной совместимости с клиентами, не поддерживающими новый протокол, можно использовать механизм mysql_native_password.

Роли и привилегии

Введено управление ролями (Roles). Роль представляет собой именованный набор привилегий. Администратор может создавать роли, назначать их пользователям и управлять иерархией привилегий. Реализован синтаксис CREATE ROLE, DROP ROLE, GRANT ROLE, SET DEFAULT ROLE.

Управление паролями

Управление конфигурацией и мониторинг

Компонентная архитектура

MySQL 8 использует модель компонентов. Вместо плагинов теперь можно подключать отдельные компоненты (например, для аудита, шифрования, мониторинга). Компонент AUDIT заменяет старый плагин аудита и предоставляет более гибкие возможности логирования.

Performance Schema

Доработанная система Performance Schema (P_S) позволяет в реальном времени отслеживать выполнение запросов, использование памяти, блокировки и события ожидания. Она стала быстрее и использует меньше ресурсов.

Глобальные блокировки

Введён тип блокировки INSTANCE (экземпляр), который можно использовать в пользовательских скриптах для координации работы приложений.

Репликация и кластеризация

Asynchronous Replication (Групповая репликация)

Улучшенная репликация на основе групп (Group Replication) появилась в MySQL 5.7, но в версии 8 была значительно стабилизирована. Она обеспечивает отказоустойчивость и автоматическое восстановление на нескольких узлах.

Snapshot-based replication

Репликация с использованием снапшотов (MySQL Clone Plugin — с версии 8.0.17). Позволяет быстро клонировать базу данных для создания новых реплик без длительного дампа и восстановления.

GTID (Global Transaction Identifiers)

Использование GTID стало обязательным по умолчанию. Это упрощает настройку и управление логическими копиями.

Применение

MySQL 8 используется как в малых, так и в крупных проектах:

Лицензирование и распространение

MySQL 8 распространяется под двойной лицензией:

Версии и жизненный цикл

Основные выпуски MySQL 8:

По состоянию на начало 2024 года официальная поддержка MySQL 8.0 завершилась, и Oracle рекомендовала переходить на MySQL 8.4 LTS (выпущен в апреле 2024 года). Однако MySQL 8.0 остаётся активно используемой версией во многих проектах.

Критика

Несмотря на широкое распространение, MySQL 8 подвергался критике по ряду направлений:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →