Восьмая версия популярной СУБД находится в активной разработке уже более года, уже было выпущено несколько DR релизов, однако это событие в сети освещается очень слабо, несмотря на то, что релиз несет в себе огромное количество изменений. Так чего же нам ждать от новой версии MySQL?
Первое, что сразу бросается в глаза — пропускаются версии 6 и 7. Да, изменится нумерация релизов, это уже входит в моду (nodejs, php, …). Но и у разработчиков из Oracle конечно же тоже были на это свои причины.
Закат MyISAM
Все системные таблицы уже переведены на InnoDB. Также представлены изменения, которые накладывают ограничения на использование MyISAM в новой версии — например нельзя просто взять и скопировать MyISAM таблицы на запущенный MySQL сервер, они не будут распознаны. В InnoDB уже реализовали все фичи, которые считались преимуществами MyISAM, и из последних осталось лишь то, что таблицы MyISAM заимают меньше места на диске и запросы count(*)
отрабатывают намного быстрее. К тому же InnoDB получил целый ряд новых возможностей, например настройка innodb_dedicated_server
, которая позволяет автоматически устанавливать значения для innodb_buffer_pool_size
, innodb_log_file_size
и innodb_flush_method
в зависимости от памяти на сервере.
Улучшения словаря данных
MySQL Server теперь включает транзакционный словарь данных, который хранит информацию о объектах базы данных. В предыдущих версиях MySQL данные словаря хранились в файлах метаданных и в непереходных таблицах. Подробней об изменениях в словаре данных можно почитать здесь.
Улучшения JSON функционала
Все мы помним про новый функционал для работы с JSON в MySQL которые появились в версии 5.7 (Испытываем новые JSON возможности в MySQL 5.7 и Использование JSON в MySQL). В восьмой версии этот функционал значительно расширится. Например добавлен оператор ->>
, который является эквивалентом вызова JSON_UNQUOTE()
на результате JSON_EXTRACT()
. Функции аггрегирования JSON_ARRAYAGG()
и JSON_OBJECTAGG()
, добавлена возможность частичного обновления JSON колонки (что эффективней чем полное удаление текущего значения и запись нового), добавлена возможность использования диапазонов в XPath выражениях, функция JSON_MERGE()
и много другое.
Оптимизатор
Добавлены невидимые и нисходящие индексы. Невидимые не используются оптимизатором, но позволяют протестировать изменение производительности от удаления индекса. И теперь при определении индекса ключ DESC больше не игнорируется, вместо этого индексы будут хранится в обратном порядке, что может быть эффективней в некоторых случаях.
Роли
Новая заманчивая возможность восьмой версии — теперь можно создавать свои роли и закреплять за ними нужные привилегии. Например
CREATE ROLE 'developer_role';
GRANT SELECT ON database.* TO 'developer_role';
GRANT 'developer_role' TO 'user'@'localhost';
Кодировка по умолчанию
Все знают, что в версиях 5.x кодировкой по умолчанию является latin1, однако начиная с версии 8.0.0 стандартной кодировкой будет utf8mb4. Теперь можно будет не переживать за сохранность emoji и других мультибайтовых символов.
И это далеко не все изменения, с полным списком вы можете ознакомиться на сайте продукта. И бесконечно радует то, что всем известный и всеми любимый продукт активно развивается и не растворился среди сотен других СУБД. Ну и напоследок объемная презентация, для тех кто лучше усваивает информацию в таком виде ?