Заметки 210 ~ 3 мин.

Релиз MySQL 9.0 - что нового

Релиз 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, можно подготовить следующие операторы:

  1. CREATE EVENT

  2. ALTER EVENT

  3. DROP EVENT

  • Плейсхолдеры (?) не поддерживаются для этих операторов но есть возможность передать значение параметра в хранимую процедуру, например, такую:

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, встроенный в предыдущие выпуски клиентских программ, был преобразован в тот, который должен быть загружен во время выполнения.

Что думаешь?

Категории
  • PHP 67
  • Заметки 18
  • Безопасность 4
  • Флуд 2
  • Nginx 2
  • ИТ новости 2
  • Видео 1
  • Docker 1
  • Roadmap 1
  • Архитектура 0

Хочешь поддержать сайт?

Делаем из мухи слона

sergeymukhin.com

персональный блог о веб-разработке от Сергея Мухина. Блог был основан в 2018 году, и собирался уделять основное внимание последним тенденциям, учебным пособиям, а также советам и рекомендациям, позволяющим начинающим девелоперам встать быстрее на правильную дорогу веб разработки, но что-то пошло не так 😃

Релизы PHP 8.4

Дата Релиз
4 Июля 2024 Альфа 1
18 Июля 2024 Альфа 2
1 Августа 2024 Альфа 3
13 Августа 2024 Feature freeze
15 Августа 2024 Бета 1
29 Августа 2024 Бета 2
12 Сентября 2024 Бета 3
26 Сентября 2024 RC 1
10 Октября 2024 RC 2
24 Октября 2024 RC 3
7 Ноября 2024 RC 4
21 Ноября 2024 GA

Что нового?