Опубликован выпуск СУБД MariaDB 11.4.2, который отмечен как первый стабильный релиз ветки 11.4. Ветка MariaDB 11.4 отнесена к категории выпусков с длительным сроком поддержки и будет сопровождаться как минимум 5 лет. Одновременно доступен выпуск MariaDB 11.5.1, имеющий статус кандидата в релизы, и сформирована ветка 11.6, в которой будет развиваться новая функциональность.
Проектом MariaDB развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с открытым и прозрачным процессом разработки, не зависящим от отдельных производителей. MariaDB поставляется вместо MySQL во многих дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и внедрён в таких крупных проектах, как Wikipedia, Google Cloud SQL и Nimbuzz.
Среди изменений в ветке MariaDB 11.4 по сравнению с прошлым LTS-выпуском 10.11:
- Значительно улучшен оптимизатор запросов, переведённый на новую весовую модель (cost model), обеспечивающую более точное предсказание весов каждого плана выполнения запроса. Ранее используемая модель хорошо подходила для нахождения оптимального индекса, но имела проблемы с применимостью операций сканирования таблицы, сканирования индекса или выборки по диапазонам. В новой модели данный недостаток устранён за счёт изменения базового веса операций, связанных с движком хранения. Например, для операций с хранилищем, таких как последовательное сканирование записей, теперь предполагается, что данные хранятся на быстром SSD-накопителе. Дополнительно проведён тюнинг и других весовых параметров оптимизатора, что, например, позволило реализовать возможность использования индексов для операций “ORDER BY/GROUP BY” в подзапросах и ускорить работу с очень маленькими таблицами.
- Значительно ускорена обработка подзапрсов в выражениях UPDATE и DELETE, ограниченных одной таблицей.
- Обеспечено использование индексов в запросах, в которых функции DATE и YEAR сравниваются с константой, например, “SELECT * FROM t2 WHERE YEAR(a) = 2024” или “SELECT * FROM t2 WHERE DATE(a) На сервере и клиенте по умолчанию включено обязательное SSL-шифрование обмена данными. Поддержка шифрования не требует настройки, так как задействован самоподписанный сертификат. Клиент может верифицировать самоподписанный серверный сертификат при использовании настройки mysql_native_password или аутентификации на основе ed25519.
В клиент также добавлены опции “–tls-fp” и “–tls-fplist” для ручной оценки сертификата по его наглядному слепку. Для отключения шифрования и проверки сертификата предусмотрены опции “–disable-ssl” и “–disable-ssl-verify-server-cert”. - В операции “ALTER TABLE … EXCHANGE PARTITION” и “ALTER TABLE … CONVERT TABLE … TO” добавлена поддержка выражений “WITH VALIDATION” и “WITHOUT VALIDATION”.
- Добавлено новое системное предтсавление “sys.privileges_by_table_by_level“, показывающее привилегии текущенго пользователя в привязке к таблицам.
- Добавлена переменная redirect_url, реализующая возможность перенаправления клиента на другой сервер (например, для балансировки нагрузки или в процессе миграции инфраструктуры).
- Добавлена поддержка приведения типов INET4 к типам INET6, что позволяет, например, сравнивать значения INET4 и INET6, а также сохранять значения INET4 в столбцах с типом INET6.
- Добавлена новая привилегия “SHOW CREATE ROUTINE”, позволяющая просматривать определения чужих подпрограмм.
- В движке InnoDB реализована переменная “innodb_truncate_temporary_tablespace_now“, включающая возможность усечения файлов (shrink) временных таблиц без перезапуска. При запуске обеспечено возвращение места на диске, которое перестало использоваться в системных таблицах.
- Добавлены новые JSON-функции JSON_OBJECT_FILTER_KEYS, JSON_OBJECT_TO_ARRAY, JSON_SCHEMA_VALID и JSON_ARRAY_INTERSEC.
- В движок хранения Spider, реализующий систему шардинга, позволяющую разносить большие таблицы на несколько серверов, добавлена поддержка определения параметров в специальной таблице “options”, вместо их кодирования в строках COMMENT/CONNECTION.
- Добавлена функция KDF для генерации ключей шифрования для AES_ENCRYPT.
- Добавлена функция FORMAT_PICO_TIME для наглядного представления времени, заданного с пикосекундной точностью.
- Повышена скорость записи лога за счёт выноса операции вычисления контрольных сумм за пределы кода, для которого выставляется глобальная блокировка.
- Добавлена системная переменная max_binlog_total_size, определяющая размер, при достижении которого бинарный лог будет очищен. Также добавлена переменная slave_connections_needed_for_purge, приостанавливающая очистку бинарного лога до достижения определённого числа соединений от slave-серверов.
- Добавлен новый режим формирования содержимого бинарного лога, включаемый через переменную binlog_row_image, – FULL_NODUP, который отличается от режима FULL исключением дубликатов данных (включаются только столбцы, изменившиеся при выполнении операции UPDATE). Новый режим также поддерживается в команде “mariadb-binlog –flashback”.
- В утилиту mariadb-dump добавлена опция “-j” (“–parallel”) для установки числа параллельно выполняемых работ по сбросу дампов таблиц. В утилиту mariadb-import добавлена опций “–use-threads” с аналогичным назначением.
- Добавлена возможность использования пакетов (CREATE PACKAGE) вне режима совместимости с ORACLE.
- В функциях AES_ENCRYPT() и AES_DECRYPT() добавлена поддержка указания вектора инициализации и выбора алгоритма шифрования.
- В утилите mariadb-dump реализовано добавление команды “sandbox” в начало каждого файла с дампом БД. Команда “sandbox” включает режим изоляции, в котором до завершения сеанса с СУБД отключается обработка команд интерактивной оболочки.