Релиз MySQL 9.0 - что нового
Итак очередной инновационный релиз в лице MySQL 9 вышел в свет, давайте посмотрим какие параметры и переменные сервера MySQL были добавлены, устарели или удалены в MySQL 9.0. Изменений по сравнению с 8.4 не так чтобы много, скорее это очередной подготовительный релиз.
Функции, добавленные или измененные в MySQL 9.0
В MySQL 9.0 были добавлены следующие функции:
Сохранение вывода JSON из EXPLAIN ANALYZE INTO. Начиная с MySQL 9.0.0, теперь поддерживается сохранение вывода
JSON
изEXPLAIN ANALYZE
в пользовательскую переменную с использованием синтаксиса:EXPLAIN ANALYZE FORMAT=JSON INTO @variable select_stmt
Переменная может быть впоследствии использована как аргумент JSON для любой из функций JSON MySQL.
Оператор INTO
поддерживается только сFORMAT=JSON
, гдеFORMAT
должен быть указан явно. Эта формаEXPLAIN ANALYZE
также поддерживает необязательное предложениеFOR SCHEMA
илиFOR DATABASE
.Эта функция доступна только в том случае, если системная переменная сервера
explain_json_format_version
равна2
; в противном случае попытка ее использования приведет к возникновению ошибкиER_EXPLAIN_ANALYZE_JSON_FORMAT_VERSION_NOT_SUPPORTED
( EXPLAIN ANALYZE не поддерживает FORMAT=JSON с explain_json_format_version=1 ).Начиная с MySQL 9.0.0, можно подготовить следующие операторы:
Плейсхолдеры (
?
) не поддерживаются для этих операторов но есть возможность передать значение параметра в хранимую процедуру, например, такую:
delimiter |
CREATE PROCEDURE sp(n INT)
BEGIN
SET @s1 = "CREATE EVENT e ON SCHEDULE EVERY ";
SET @s2 = " SECOND
STARTS CURRENT_TIMESTAMP + INTERVAL 10 SECOND
ENDS CURRENT_TIMESTAMP + INTERVAL 2 MINUTE
ON COMPLETION PRESERVE
DO
INSERT INTO d.t VALUES ROW(NULL, NOW(), FLOOR(RAND()*100))";
SET @s = CONCAT(@s1, n, @s2);
PREPARE ps FROM @s;
EXECUTE ps;
DEALLOCATE PREPARE ps;
END |
delimiter ;
Таблицы системных переменных Performance Schema. MySQL 9.0 добавляет две новые таблицы в Performance Schema, которые предоставляют информацию о системных переменных сервера:
Таблица
variables_metadata
содержит общую информацию о системных переменных. Эта информация включает имя, область действия, тип, диапазон (где применимо) и описание каждой системной переменной, распознаваемой сервером MySQL.Два столбца в этой таблице (
MIN_VALUE
иMAX_VALUE
) предназначены для замены устаревших столбцов таблицыvariables_info
.В таблице
global_variable_attributes
представлена информация о парах атрибут-значение, назначенных сервером глобальным системным переменным, таких как например offline_mode или read_only.
Атрибуты и их значения не могут быть установлены пользователями, и они не могут быть прочитаны пользователями, кроме как запрашивающими эту таблицу. Атрибуты и их значения могут быть установлены, изменены или удалены только сервером.
Устаревшие функции в MySQL 9.0
Для приложений, использующих устаревшие в MySQL 9.0 функции, которые были удалены в более поздней версии MySQL, операторы могут давать сбой при репликации из источника MySQL 9.0 в реплику, работающую под управлением более поздней версии, или могут иметь разные эффекты на источнике и реплике. Чтобы избежать таких проблем, приложения, использующие устаревшие в 9.0 функции, следует пересмотреть, чтобы избегать их и использовать альтернативы, когда это возможно.
Столбцы таблицы variables_info. Столбцы
MIN_VALUE
иMAX_VALUE
таблицыvariables_info
теперь устарели и могут быть удалены в будущем. Вместо этого используйте столбцы таблицыvariables_metadata
которые имеют те же названия.
Удаленные функции в MySQL 9.0
Для приложений которые используют функции MySQL 8.4 и которые были удаленные в MySQL 9.0, операторы могут давать сбой при репликации из источника MySQL 8.4 в реплику MySQL 9.0 или могут иметь разные эффекты на источнике и реплике. Чтобы избежать таких проблем, приложения, которые используют функции, удаленные в MySQL 9.0, следует пересмотреть, чтобы избегать их и использовать альтернативы, когда это возможно.
Плагин mysql_native_password. Плагин аутентификации mysql_native_password, ранее устаревший в MySQL 8.0, был удален. Теперь сервер отклоняет запросы аутентификации
mysql_native
от старых клиентских программ, которые не имеют возможностиCLIENT_PLUGIN_AUTH
.В связи с этим изменением также были удалены следующие параметры и переменные сервера:
Серверный параметр
--mysql-native-password
Серверный параметр
--mysql-native-password-proxy-users
Системная переменная сервера
default_authentication_plugin
Для обратной совместимости
mysql_native_password
остается доступным на клиенте, так что клиентские программы MySQL 9.0 могут подключаться к более ранним версиям сервера MySQL. В MySQL 9.0 собственный плагин аутентификации MySQL, встроенный в предыдущие выпуски клиентских программ, был преобразован в тот, который должен быть загружен во время выполнения.
Что думаешь?