MySQL 9.0 Community Edition: Ключевые возможности и улучшения
Введение
1 июля 2024 года MySQL выпустила версию 9.0 Community Edition, назвав её "Инновационным релизом". Новая версия обещает повышенную производительность, гибкость и новые возможности, призванные удовлетворить динамичные потребности современных приложений. Но оправдает ли она надежды, особенно после бурного приёма MySQL 8.0? Давайте посмотрим, что может предложить MySQL 9.0.
Ключевые возможности и улучшения
Реконструкция словаря данных и типов данных
Одним из основных изменений в MySQL 9.0 является реструктуризация словаря данных и уточнение типов данных. Словарь данных был реорганизован, чтобы лучше обрабатывать операции с метаданными и минимизировать накладные расходы, связанные с операциями со схемой. Усовершенствования типов данных направлены на улучшение валидации данных и создание отчётов об ошибках, особенно в операциях преобразования данных с использованием несовместимых типов. Эта модернизация крайне важна для приложений, использующих различные международные наборы символов, обеспечивая целостность и непротиворечивость данных.
Простой пример взаимодействия с новыми таблицами словаря данных:
-- Создание примера таблицы для демонстрации
CREATE TABLE sample_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Запрос информации в новую организацию словаря данных
SELECT * FROM information_schema.tables WHERE table_name = 'sample_table';
-- Пример, демонстрирующий улучшения в валидации типов данных и создании отчётов об ошибках
CREATE TABLE data_type_example (
numeric_column INT,
string_column VARCHAR(10)
);
-- Попытка вставить несовместимые данные, чтобы увидеть отчёт об ошибке
INSERT INTO data_type_example (numeric_column, string_column) VALUES (123, 'ThisStringIsTooLong');
-- Это приведёт к ошибке, связанной с ограничением длины строки
Более подробную информацию и примеры можно найти в разделах Data Dictionary Notes и Data Type Notes.
Новый тип данных Vector
Введение типа данных VECTOR
в MySQL 9.0 знаменует значительное развитие. Эта возможность позволяет пользователям эффективно хранить списки или массивы чисел с плавающей точкой, что особенно важно при анализе данных и научных вычислениях.
Базовый пример использования типа данных VECTOR
:
-- Создание таблицы с колонкой/столбцом VECTOR
CREATE TABLE vector_example (
id INT AUTO_INCREMENT PRIMARY KEY,
values VECTOR(100) -- Колонка VECTOR может содержать до 100 значений с плавающей точкой.
);
-- Вставка данных в колонку VECTOR
INSERT INTO vector_example (values) VALUES (TO_VECTOR('[1.0, 2.0, 3.0]'));
-- Получение данных из колонки VECTOR
SELECT id, VECTOR_TO_STRING(values) as vector_values FROM vector_example;
Чтобы узнать больше об этой новой функции, ознакомьтесь с подробным разделом Vector Data Type.
Планировщик событий и JavaScript программы
MySQL 9.0 расширяет возможности планировщика событий для поддержки более сложных операций, повышая уровень автоматизации баз данных. Кроме того, появилась поддержка хранимых процедур и функций на основе JavaScript, что позволяет разработчикам использовать гибкость JavaScript для создания скриптов операций с базами данных.
Пример хранимой JavaScript функции:
-- Создание хранимой JavaScript функции
CREATE FUNCTION gcd(a INT, b INT)
RETURNS INT
NO SQL
LANGUAGE JAVASCRIPT AS
$$
let x = Math.abs(a);
let y = Math.abs(b);
while(y) {
let t = y;
y = x % y;
x = t;
}
return x;
$$;
-- Использование хранимой JavaScript функции
SELECT gcd(48, 18);
Дополнительную информацию по этой теме можно найти в разделе JavaScript Programs.
Улучшения производительности и стабильности
Исправленные ошибки
В MySQL 9.0 исправлен широкий спектр ошибок, что повышает общую надёжность системы баз данных. Среди 127 исправленных проблем заметные улучшения включают удаление устаревшей функциональности, специфичной для функций атомарной записи Fusion IO, и улучшение проблемы Group BY
.
Подробный список исправлений можно посмотреть в разделе Bugs Fixed.
Улучшения Performance Schema
В Performance Schema были добавлены две новые таблицы, variables_metadata
и global_variable_attributes
. Эти таблицы отслеживают системные переменные и пары атрибут-значение, назначенные сервером в глобальные переменные. Такие обновления предоставляют администраторам баз данных и разработчикам лучшие инструменты для мониторинга, устранения неполадок и настройки производительности экземпляров MySQL.
-- Пример использования новых таблиц Performance Schema
SELECT * FROM performance_schema.variables_metadata LIMIT 2;
SELECT * FROM performance_schema.global_variable_attributes LIMIT 2;
Более подробную информацию можно найти в Performance Schema Notes.
Устаревшие функции
В версии MySQL 9.0 объявлено об устаревании нескольких функций, что готовит их к полному удалению в будущих релизах:
- Плагин аутентификации
mysql_native_password
был переведён в разряд динамически загружаемых плагинов, что свидетельствует о постепенном отказе от него. - Колонки
MIN_VALUE
иMAX_VALUE
таблицы Performance Schemavariables_info
считаются устаревшими. Вместо них используйте таблицуvariables_metadata
. - Небезопасное шифрование SHA-1 было удалено, и теперь система требует
caching_sha2_password
для аутентификации.
Полный список устаревших функций можно найти в разделе Deprecation and Removal Notes.
Подведение итогов
Хотя MySQL 9.0 предлагает значительные инженерные улучшения и несколько новых функций, он может не соответствовать высоким ожиданиям, возлагаемым на "Инновационный релиз". Практические улучшения производительности ещё не полностью подтверждены бенчмарками. Эволюционные шаги, а не революционные изменения, говорят, что MySQL 9.0 — надёжное обновление для тех, кто хочет оставаться в тренде, но, возможно, не заставит тех, кто доволен предыдущими версиями, немедленно переходить на новую.
Заключение
В MySQL 9.0 Community Edition реализованы важные усовершенствования, включая улучшенное управление данными, новый тип данных VECTOR и поддержку программирования на JavaScript. Не будучи революционной, она представляет собой устойчивое развитие MySQL, предоставляя надёжные возможности для разработчиков и администраторов. Тем, кто стремится к стабильности, рекомендуется подождать дальнейших улучшений или выбрать LTS-версию.