После года разработки и трёх предварительных выпусков опубликован первый стабильный релиз новой ветки СУБД MariaDB 10.6, в рамках которой развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Поддержка новой ветки будет осуществляться 5 лет, до июля 2026 года.
Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с полностью открытым и прозрачным процессом разработки, не зависящим от отдельных производителей. MariaDB поставляется вместо MySQL во многих дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и внедрён в таких крупных проектах, как Wikipedia, Google Cloud SQL и Nimbuzz.
Ключевые улучшения MariaDB 10.6:
- Обеспечена атомарность выполнения выражений “CREATE TABLE|VIEW|SEQUENCE|TRIGGER”, “ALTER TABLE|SEQUENCE”, “RENAME TABLE|TABLES”, “DROP TABLE|VIEW|VIEW|TRIGGER|DATABASE” – либо выражение полностью завершено, либо всё возвращается в исходное состояние. В случае операций “DROP TABLE”, удаляющих разом несколько таблиц, атомарность обеспечивается на уровне каждой отдельной таблицы. Целью изменения является обеспечение целостности в случае краха сервера в процессе выполнения операции. Ранее, после краха могли оставаться временные таблицы и файлы, нарушаться синхронизация таблиц в движках хранения и frm-файлах, оставаться непереименованными отдельные таблицы при переименовании разом нескольких таблиц. Целостность обеспечивается за счёт ведения журнала восстановления состояния, путь к которому можно определить через новую опцию “–log-ddl-recovery=файл” (по умолчанию ddl-recovery.log).
- Реализована определённая в стандарте SQL 2008 конструкция “SELECT … OFFSET … FETCH“, позволяющая вывести определённое число строк, начиная с указанного смещения, с возможностью использования параметра “WITH TIES” для прикрепления ещё оного следующего значения. Например, выражение “SELECT i FROM t1 ORDER BY i ASC OFFSET 1 ROWS FETCH FIRST 3 ROWS WITH TIES” отличается от конструкции “SELECT i FROM t1 ORDER BY i ASC LIMIT 3 OFFSET 1” выводом ещё одного элемента, следующего в хвосте (вместо 3 будет выведено 4 строки).
- Для движка InnoDB реализован синтаксис “SELECT … SKIP LOCKED“, позволяющая исключить строки, которые не могут быть заблокированы (“LOCK IN SHARE MODE” или “FOR UPDATE”).
- Реализована возможность игнорирования индексов (в MySQL 8 подобная функциональность именуется “невидимыми индексами”). Пометка индекса для игнорирования осуществляется при помощи флага IGNORED в выражении “ALTER TABLE”, после чего индекс остаётся видимым и обновляемым, но не используется оптимизатором.
- Добавлена функция JSON_TABLE(), предназначенная для преобразования данных JSON в реляционную форму. Например, документ JSON можно преобразовать для использования в контексте таблицы, которую можно указать внутри блока FROM в выражении SELECT.
- Улучшена совместимость с СУБД Oracle. Добавлена поддержка анонимных подзапросов внутри блока FROM, конструкции MINUS (эквивалент EXCEPT), а также функций ADD_MONTHS(), TO_CHAR(), SYS_GUID() и ROWNUM().
- В движке InnoDB ускорена вставка в пустые таблицы. Формат строк COMPRESSED по умолчанию переведён в режим только для чтения. Схема SYS_TABLESPACES пришла на смену SYS_DATAFILES и напрямую отражает состояния в ФС. Для временного табличного пространства обеспечена поддержка отложенной записи. Прекращена поддержка старого алгоритма контрольных сумм, сохранявшегося для совместимости с MariaDB 5.5.
- В системе репликации размер значения параметра master_host увеличен с 60 до 255 символов, а master_user до 128. Добавлена переменная binlog_expire_logs_seconds для настройки времени устаревания бинарного лога в секундах (ранее время сброса определялось только в днях через переменную expire_logs_days).
- В механизм синхронной multi-master репликации Galera реализована переменная wsrep_mode, для настройки параметров API WSREP (Write Set REPlication). Разрешён перевод Galera с незашифрованных коммуникаций на использование TLS без остановки кластера.
- Реализована схема sys-schema, в которой собрана коллекция из представлений, функций и процедур для анализа операций с БД.
- Добавлены служебные таблицы для анализа производительности репликации.
- В набор информационных таблиц добавлены представления INFORMATION_SCHEMA.KEYWORDS и INFORMATION_SCHEMA.SQL_FUNCTIONS, выводящие список доступных ключевых слов и функций.
- Удалены хранилища TokuDB и CassandraSE.
- Кодировка utf8 переведена с четырёхбайтового представления utf8mb4 (U+0000..U+10FFFF) на трёхбайтовое utf8mb3 (охватывает диапазон Unicode U+0000..U+FFFF).
- Добавлена поддержка активации по сокету в systemd.
- В плагине GSSAPI добавлена поддержка имён групп Active Directory и SID.
- Добавлена проверка наличия файла конфигурации $MARIADB_HOME/my.cnf в дополнение к $MYSQL_HOME/my.cnf.
- Реализованы новые системные переменные binlog_expire_logs_seconds, innodb_deadlock_report, innodb_read_only_compressed, wsrep_mode и Innodb_buffer_pool_pages_lru_freed.