Опубликована новая LTS-ветка СУБД MariaDB 12.3

Представлен выпуск СУБД MariaDB 12.3.2, который отмечен как первый стабильный релиз ветки 12.3. Ветка MariaDB 12.3 отнесена к выпускам с длительным сроком поддержки и будет сопровождаться до июня 2029 года. Одновременно доступен выпуск MariaDB 13.0.1, имеющий статус кандидата в релизы.

Проектом MariaDB развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с открытым и прозрачным процессом разработки, не зависящим от отдельных производителей. MariaDB поставляется вместо MySQL во многих дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и внедрён в таких крупных проектах, как Wikipedia, Google Cloud SQL и Nimbuzz.

Среди изменений в ветке MariaDB 12.3 по сравнению с прошлым LTS-выпуском MariaDB 11.8:

  • Полностью переделана реализация бинарного лога (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, например:

       SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE ...;
       SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE ...;
    
  • Повышена производительность неупорядоченных выражений «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, ранее объявленные устаревшими.



Источник: http://www.opennet.ru/opennews/art.shtml? num=65581

© OpenNet