Основные изменения в MySQL 9.1:
- В операцию "CREATE VIEW" добавлена поддержка выражения "IF NOT EXISTS", позволяющего организовать создание представления только если представления с указанным именем ещё не существует и избежать возвращения ошибки, если представление уже создано.
- Прекращена загрузка триггеров при выполнении операций, связанных только с чтением. Ранее триггеры загружались при любом доступе к таблице, что приводило к расходованию памяти и созданию нагрузки на CPU в ситуациях, когда триггеры не использовались (например, при выполнении запросов SELECT). В MySQL 9.1 обработка и загрузка триггеров разделена на две стадии: чтение метаданных о триггере и разбор+выполнение траггера. Данные, полученные на первой стадии сохраняются один раз и затем совместно используются в различных экземплярах триггера. Разбор и выполнение триггера производится только для выражений, приводящих к изменению данных. Кроме того, для сокращения потребления памяти вместо статического выделения буферов для обработки ошибок в триггерах осуществлён переход к динамическому выделению памяти по необходимости.
- Расширен вывод операции "EXPLAIN", в котором теперь отображаются сведения об использовании многодиапазонного чтения (multi-range) и применении стратегии полуобъединения (semijoin), при которой при операциях JOIN обрабатываются строки только из одной таблицы.
- Обеспечено атомарное выполнение операций "CREATE DATABASE" и "DROP DATABASE" для защиты от сбоев в случае аварийного завершения или возникновения ошибок на уровне файловой системы во время выполнения данных операций. Например, ранее при аварийном завершении "CREATE DATABASE" могла быть сформирована неполная нерабочая структура хранилища БД, для очистки которой требовалось ручное вмешательство.
- В написанных на JavaScript хранимых процедурах обеспечена поддержка типа VECTOR. Данные с указанным типом теперь могут передаваться во входных и возвращаемых параметрах.
- Добавлена возможность аутентификации при подключении к СУБД с использованием протокола OpenID Connect.
- Устранено 27 уязвимостей, самой серьёзной из которых (CVE-2024-5535) присвоен критический уровень опасности (9.1 из 10). Уязвимость может быть эксплуатирована удалённо без прохождения аутентификации. Проблема вызвана чтением данных из области вне выделенного буфера в библиотеке OpenSSL и приводит к аварийному завершению или утечке содержимого памяти в ответе после соединения с сервером с указанием некорректных параметров протокола.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62067