MySQL 8.0
MySQL 8.0 — это одна из основных версий свободной реляционной системы управления базами данных (СУБД) MySQL, выпущенная корпорацией Oracle. Релиз был официально представлен 19 апреля 2018 года. Данная версия привнесла значительные изменения в архитектуру, производительность и функциональность по сравнению с предыдущей стабильной веткой MySQL 5.7, включая поддержку NoSQL-документов (JSON), оконных функций, общих табличных выражений (CTE) и улучшенный оптимизатор запросов.
История и предпосылки создания
Разработка MySQL 8.0 началась вскоре после стабилизации версии 5.7. Основной целью было устранение накопившихся архитектурных ограничений, особенно в области работы с неструктурированными данными и сложными аналитическими запросами. Первые публичные версии (Development Milestone Releases) стали доступны для тестирования в 2016 году. После нескольких лет бета-тестирования и доработок, включая внедрение новой системы словаря данных (Data Dictionary), 19 апреля 2018 года был выпущен General Availability (GA) релиз.
Переход с версии 5.7 на 8.0 был признан одним из самых значительных обновлений в истории проекта, поскольку требовал обновления клиентских библиотек и некоторых изменений в синтаксисе SQL. В отличие от предыдущих мажорных версий, MySQL 8.0 сразу позиционировалась как долгосрочный стабильный релиз с поддержкой до 2026 года (Extended Support).
Ключевые нововведения и архитектура
Словарь данных (Data Dictionary)
В MySQL 8.0 была полностью переработана система хранения метаданных. Ранее словарь данных хранился в виде набора файлов (файлов .FRM для таблиц, .PAR для партиций и т.д.). В новой версии все метаданные перенесены в транзакционные таблицы InnoDB. Это позволило:
- Устранить проблемы с согласованностью данных при сбоях.
- Поддерживать атомарные DDL-операции (CREATE, ALTER, DROP), которые теперь выполняются как единая транзакция.
- Упростить резервное копирование и восстановление структуры БД.
Поддержка JSON
Хотя поддержка JSON была введена ещё в MySQL 5.7, в версии 8.0 она была значительно расширена:
- Добавлены функции для работы с JSON-массивами и объектами (JSON_TABLE).
- Введён тип данных JSON, который хранит документы в бинарном формате, оптимизированном для быстрого поиска.
- Реализована возможность индексации виртуальных столбцов, созданных на основе JSON-полей.
Оконные функции и CTE
MySQL 8.0 стала первой версией, которая нативно поддерживает оконные функции (аналитические функции) и общие табличные выражения (Common Table Expressions, CTE). Это позволило выполнять сложные аналитические запросы (например, вычисление скользящего среднего, ранжирование строк, рекурсивные запросы) без необходимости использования сложных подзапросов или хранимых процедур. Примеры оконных функций: ROW_NUMBER(), RANK(), LAG(), LEAD().
Улучшенный оптимизатор запросов
В версии 8.0 был переработан оптимизатор запросов. Ключевые изменения:
- Cost Model (модель стоимости): Теперь учитывает данные из таблиц
mysql.engine_costиmysql.server_cost, что позволяет администраторам настраивать веса операций (чтение, запись, сравнение) под конкретное оборудование. - Histograms (гистограммы): Введена поддержка гистограмм (статистических распределений данных) для неиндексированных столбцов. Это улучшает выбор плана выполнения запроса, особенно для диапазонных условий.
- Skip Scan Range Access: Новый метод доступа к данным, который позволяет оптимизатору пропускать нерелевантные части индекса при поиске по составному индексу.
Аутентификация и безопасность
- Аутентификация по умолчанию: Изменён плагин аутентификации с
mysql_native_passwordнаcaching_sha2_password, который использует SHA-256 и обеспечивает более высокую криптостойкость. - Роли: Введена поддержка ролей (аналог групп пользователей), что упрощает управление правами доступа в крупных системах.
- Шифрование: Улучшена поддержка шифрования на уровне таблиц (InnoDB) и на уровне соединений (TLS 1.3).
Классификация и редакции
MySQL 8.0 распространяется в нескольких редакциях, различающихся по функциональности и условиям лицензирования:
| Редакция | Лицензия | Особенности |
|---|---|---|
| MySQL Community Server | GPL v2 | Полнофункциональная версия, доступна бесплатно. Включает все основные возможности: оконные функции, JSON, CTE, репликацию. |
| MySQL Standard Edition | Коммерческая | Включает все функции Community, плюс техническую поддержку Oracle. |
| MySQL Enterprise Edition | Коммерческая | Содержит дополнительные инструменты: мониторинг (MySQL Enterprise Monitor), аудит безопасности, шифрование данных, расширенную репликацию. |
| MySQL Cluster CGE | Коммерческая | Ориентирована на высокодоступные распределённые системы. |
Применение и значение
MySQL 8.0 является одной из самых популярных СУБД в мире, используемой как в малых проектах, так и в крупных корпоративных системах. Основные области применения:
- Веб-приложения: Является стандартной СУБД для LAMP-стека (Linux, Apache, MySQL, PHP/Python/Perl). Используется в таких системах, как WordPress, Joomla, Drupal.
- Аналитические системы: Благодаря оконным функциям и CTE, версия 8.0 стала пригодна для выполнения сложных аналитических запросов, ранее требовавших специализированных решений (например, PostgreSQL или коммерческих СУБД).
- Интернет вещей (IoT): Поддержка JSON и NoSQL-документов позволяет хранить и обрабатывать данные с датчиков и устройств в гибком формате.
- Облачные сервисы: MySQL 8.0 является одной из базовых СУБД в облачных платформах (Amazon RDS, Google Cloud SQL, Яндекс Облако).
Интересные факты
- Версия 8.0 стала первой, в которой была удалена поддержка устаревших механизмов хранения, таких как MyISAM для системных таблиц (словарь данных).
- В MySQL 8.0 была введена команда
ALTER INSTANCE ROTATE INNODB MASTER KEYдля ротации мастер-ключа шифрования без остановки сервера. - Несмотря на появление версии 8.0, многие крупные компании (например, Facebook) долгое время продолжали использовать форки MySQL 5.7, адаптируя их под свои нужды.
- В 2023 году была выпущена версия MySQL 8.0.33, которая стала последней в линейке 8.0 (дальнейшие обновления — только исправления безопасности). Разработка сосредоточена на версии 8.4 и 9.0 (Innovation Release).
Критика и ограничения
Несмотря на значительные улучшения, MySQL 8.0 подвергалась критике по нескольким направлениям:
- Производительность при высокой конкурентности: В некоторых сценариях (много одновременных транзакций) производительность InnoDB уступала решениям на основе PostgreSQL или коммерческих СУБД (Oracle, Microsoft SQL Server).
- Сложность обновления: Переход с MySQL 5.7 на 8.0 требовал обновления всех клиентских библиотек, так как протокол аутентификации был изменён. Это вызывало проблемы в крупных инфраструктурах.
- Лицензионная политика Oracle: Корпорация Oracle, владеющая правами на MySQL, периодически вносила изменения в лицензионную политику, что вызывало опасения у сообщества открытого ПО. Это привело к появлению форков, таких как MariaDB и Percona Server.
Источники
- MySQL 8.0 Release Notes (Oracle Corporation)
- «MySQL 8.0: The New Generation» — официальная документация Oracle
- «High Performance MySQL» (3rd edition) — Baron Schwartz, Peter Zaitsev, Vadim Tkachenko
- Статья «What's New in MySQL 8.0» на сайте MySQL Server Team
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →