После года разработки и трёх предварительных выпусков опубликован первый стабильный релиз новой ветки СУБД 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.
Источник: opennet.ru