Релиз СУБД MariaDB Server 12.3 с долгосрочной поддержкой (LTS)

от автора

29 мая 2026 года состоялся выпуск СУБД MariaDB Server 12.3.2, который отмечен как первый стабильный релиз ветки 12.3. Ветка MariaDB 12.3 отнесена к выпускам с длительным сроком поддержки (LTS) и будет сопровождаться как минимум 5 лет (до июня 2029 года). Одновременно опубликован выпуск MariaDB 13.0.1, имеющий статус кандидата в релизы. Выпуск предыдущей ветки проекта с долгосрочной поддержкой MariaDB Server 11.8 LTS случился в июне 2025 года.

В рамках проекта MariaDB развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей.

Развитие проекта MariaDB курирует независимая организация MariaDB Foundation в соответствии с открытым и прозрачным процессом разработки, не зависящим от отдельных производителей.

Решение MariaDB поставляется вместо MySQL во многих дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и внедрено в таких крупных проектах, как Wikipedia, Google Cloud SQL и Nimbuzz.

По информации OpenNET, основные улучшения в MariaDB 12.3 по сравнению с прошлым LTS-выпуском проекта:

  • полностью переделана реализация бинарного лога (binlog), основные компоненты для ведения которого перенесены в движок InnoDB. Подобный перенос позволил избавиться от устаревшей логики синхронизации, ускорить репликацию и повысить производительность выполнения операций, связанных с записью данных. При тестировании новой реализации на высоконагруженных системах отмечен прирост производительности при большом числе операций записи до 4 раз. Для включения предложена настройка «binlog_storage_engine=innodb»;

  • на 30–50% повышена скорость векторного поиска с использованием типа VECTOR, применяемого в системах машинного обучения. Ускорение достигается благодаря оптимизации вычислений при поиске сходства между векторами в многомерных пространствах и реализации новой техники экстраполяции на основе вложенных векторных представлений (matryoshka embedding);

  • добавлены возможности для упрощения миграции с СУБД Oracle. В режиме совместимости с СУБД Oracle реализованы функции TO_NUMBER (преобразование строки в число), TO_DATE (преобразование строки в дату) и TRUNC (усечение даты, например, до часа, дня, месяца, года), а также появилась поддержка ассоциативных массивов (INDEX BY) и синтаксиса «( + )» для определения внешних слияний (outer join);

  • для повышения совместимости с MySQL добавлен плагин аутентификации caching_sha2_password, применяющий для хэширования алгоритм SHA2 вместо SHA1 и совместимый с одноимённым плагином из MySQL 9;

  • добавлен новый тип XMLTYPE для хранения данных в формате XML;

  • реализована возможность использования курсоров с параметризованными запросами (prepared statement);

  • добавлено выражение «SET PATH» для задания порядка поиска компонентов схемы хранения при обращении к ним без указания имени схемы;

  • реализована поддержка операции «IS JSON» для проверки типа выражения JSON, определённой в стандарте SQL:2023;

  • в выражении «PARTITION BY KEY» реализована поддержка алгоритмов хэширования MYSQL51, MYSQL55, BASE31, CRC32C, XXH32 и XXH3;

  • в движке хранения Aria реализован сегментированный кэш ключей, в котором ключи разбиваются на группы, хранимые в отдельных сегментах кэша. Новый кэш позволил повысить производительность паралеллельного выполнения запросов разными пользователями. Число сегментов задаётся через переменную aria_pagecache_segments, которая может принимать значения от 1 (по умолчанию) до 128;

  • добавлена возможность использования индексов на основе функций (functional index) для повышения производительности операций GROUP/ORDER BY;

  • реализована поддержка выражения «CREATE GLOBAL TEMPORARY TABLE» для создания глобальных временных таблиц. Подобные временные таблицы удаляются после завершения сеанса и видны всем пользователям, но содержат данные, индивидуальные для каждого пользователя;

  • добавлена поддержка SSL-ключей, защищённых паролем. Пароль для разблокирования SSL-сертификатов может быть задан через переменную ssl_passphrase или вручную при запуске сервера;

  • добавлено выражение «SET SESSION AUTHORIZATION» для выполнения действия под другим пользователем при выставлении соответствующих привилегий (выражение можно рассматривать как аналог «sudo» для СУБД);

  • в плагин file_key_management.so добавлена поддержка хэшей SHA-2;

  • добавлена поддержка слабых курсорных переменных (weak cursor variable) предопределенного типа SYS_REFCURSOR, позволяющих возвращать курсор из хранимых процедур (в параметре OUT) или из функций (в выражении RETURN). Для ограничения максимального числа одновременно открытых курсоров добавлена системная переменная «max_open_cursors»;

  • в тип TO_CHAR добавлена поддержка формата FM (Fill Mode) для исключения добавочного заполнения. Например, запрос «SELECT CONCAT(‘/’, TO_CHAR(‘2020-01-06 10:11:12’, ‘FMDAY’), ‘/’);» вернёт «/Monday/» вместо «/Monday /»;

  • в утилиту mariadb-check и выражение CHECK TABLE добавлена поддержка таблиц от движка SEQUENCE;

  • в оптимизатор добавлена поддержка опций (hint), влияющих на построения плана оптимизаций: QB_NAME, NO_RANGE_OPTIMIZATION, NO_ICP, MRR, NO_MRR, BKA, NO_BKA, BNL, NO_BNL, SEMIJOIN, SUBQUERY, JOIN_FIXED_ORDER, JOIN_ORDER, JOIN_PREFIX, JOIN_SUFFIX, MAX_EXECUTION_TIME, [NO_]JOIN_INDEX, [NO_]GROUP_INDEX, [NO_]ORDER_INDEX, [NO_]INDEX, [NO_]SPLIT_MATERIALIZED, NO_ROWID_FILTER, INDEX_MERGE/NO_INDEX_MERGE, [NO_]DERIVED_CONDITION_PUSHDOWN и [NO_]MERGE. Опции подставляются в запрос в формате, совместимом с MySQL;

  • повышена производительность неупорядоченных выражений «LEFT JOIN» и упорядоченного сканирования при использовании выражения «PARTITION BY RANGE«;

  • в результатах трассировки оптимизатора обеспечен показ определений таблиц и представлений;

  • при выполнении операций слияния таблиц (JOIN) реализована оптимизация, учитывающая уникальность строк в подзапросах с выражением «GROUP BY» для более точного прогнозирования числа результирующих строк (out_rows) и корректного применения индексов;

  • улучшена масштабируемость блокировок MDL (Metadata Lock);

  • добавлена поддержка новых функций GIS (Geographic Information System): ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect;

  • добавлена поддержка триггеров, срабатывающих для нескольких событий. В выражении CREATE TRIGGER теперь можно перечислять подпадающие под него события, используя синтаксис «{ event [ OR … ] }»;

  • в плагин для ведения лога аудита добавлена поддержка буферизации операции записи в лог. Размер буфера задаётся через переменную server_audit_file_buffer_size. Реализовано сохранение в логе аудита информации о сетевых портах для входящих соединений (ранее отражался только хост);

  • в утилиту mariadb добавлена опция «—script-dir» для задания альтернативного каталога поиска скриптов, запускаемых командой SOURCE;

  • разрешено использование репликации в параллельном режиме при асинхронной репликации данных между двумя кластерами Galera;

  • в утилиту mariadb-dump добавлена возможность указания масок (например, «database_*»), используя опцию «-L» (—wildcards);

  • убрано требование по уникальности идентификаторов внешних ключей (foreign key) в контексте всей БД (достаточно уникальности на уровне таблицы);

  • сняты ограничения на уровень вложенности структур в функциях для работы с JSON (убран лимит JSON_DEPTH_LIMIT, который ранее принимал значение 32);

  • добавлена таблица TRIGGERED_UPDATE_COLUMNS в схеме INFORMATION_SCHEMA (INFORMATION_SCHEMA.TRIGGERED_UPDATE_COLUMNS), показывающая столбцы, изменяемые при срабатывании триггера;

  • в таблице PARAMETERS в схеме INFORMATION_SCHEMA реализован столбец PARAMETER_DEFAULT, содержащий значения по умолчанию параметров хранимых процедур;

  • удалены переменные big_tables, large_page_size и storage_engine, ранее объявленные устаревшими.

ссылка на оригинал статьи https://habr.com/ru/articles/1041520/