Стабильный выпуск СУБД MariaDB 10.5

После года разработки и четырёх предварительных выпусков подготовлен первый стабильный релиз новой ветки СУБД MariaDB 10.4, в рамках которой развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Поддержка новой ветки будет осуществляться 5 лет, до июня 2025 года.

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

Ключевые улучшения MariaDB 10.5:

  • Добавлен движок хранения S3, позволяющий размещать таблицы MariaDB в Amazon S3 или любом другом публичном или приватном облачном хранилище, поддерживающем API S3. Поддерживается размещение в S3 как обычных, так и секционированных (партицированных) таблиц. При размещении в облаке секционированных таблиц они могут напрямую использоваться в том числе с другого сервера, имеющего доступ к хранилищу S3.
  • Добавлен движок хранения ColumnStore, который хранит данные в привязке к столбцам и использует массово-параллельную распределённую архитектуру. Движок основан на наработках MySQL-хранилища InfiniDB и предназначен для организации обработки и выполнения аналитических запросов над большими массивами данных (Data Warehouse).
    ColumnStore хранит данные не построчно, а с разбивкой по столбцам, что позволяет оптимизировать выполнение группировки по столбцам из БД большого размера, включающей петабайты данных. Поддерживается линейное масштабирование, хранение данных в сжатом виде, вертикальное и горизонтальное партицирование, эффективное выполнение конкурирующих запросов.

  • Все исполняемые файлы, начинающиеся со слова «mysql» переименованы с использованием слова «mariadb». Старые имена сохранены в форме символических ссылок.
  • Добавлен новый тип данных INET6 для хранения адресов IPv6.
  • Выполнена работа по разделению привилегий на более мелкие составляющие. Вместо общей привилегии SUPER предложена серия из выборочных привилегий «BINLOG ADMIN»,
    «BINLOG REPLAY»,
    «CONNECTION ADMIN»,
    «FEDERATED ADMIN»,
    «READ_ONLY ADMIN»,
    «REPLICATION MASTER ADMIN»,
    «REPLICATION SLAVE ADMIN» и
    «SET USER».

  • Привилегия «REPLICATION CLIENT» переименована в «BINLOG MONITOR», а выражение «SHOW MASTER STATUS» в «SHOW BINLOG STATUS». Переименование уточняет поведение и не связано с политкорректностью, проект не отказывается от терминов master/slave и даже добавил новые привилегии «MASTER ADMIN» и «SLAVE ADMIN». При этом в SQL выражения добавлен новый ключ «REPLICA», являющийся синонимом «SLAVE».
  • Для некоторые выражений изменены привилегии, необходимые для их выполнения. «SHOW BINLOG EVENTS» теперь требует прав «BINLOG MONITOR» вместо «REPLICATION SLAVE», «SHOW SLAVE HOSTS» требует привилегии «REPLICATION MASTER ADMIN» вместо «REPLICATION SLAVE», «SHOW SLAVE STATUS» требует прав «REPLICATION SLAVE ADMIN» или «SUPER» вместо «REPLICATION CLIENT», «SHOW RELAYLOG EVENTS» требует прав «REPLICATION SLAVE ADMIN» вместо «REPLICATION SLAVE».
  • Добавлены конструкции «INSERT … RETURNING» и «REPLACE … RETURNING«, возвращающие список вставленных/заменённых сток в форме, как если бы значения возвращались при использовании выражения SELECT (по аналогии с «DELETE … RETURNING»).

    INSERT INTO t2 VALUES (1,’Dog’),(2,’Lion’),(3,’Tiger’),(4,’Leopard’)
    RETURNING id2,id2+id2,id2&id2,id2||id2;
    +——+———+———+———-+
    | id2 | id2+id2 | id2&id2 | id2||id2 |
    +——+———+———+———-+
    | 1 | 2 | 1 | 1 |
    | 2 | 4 | 2 | 1 |
    | 3 | 6 | 3 | 1 |
    | 4 | 8 | 4 | 1 |
    +——+———+———+———-+

  • Добавлены выражения «EXCEPT ALL» и «INTERSECT ALL» для исключения/дополнения результата определённым набором значений.
  • Появилась возможность указания комментариев внутри блоков «CREATE DATABASE» и «ALTER DATABASE».
  • Добавлены конструкции для переименования индексов и столбцов «ALTER TABLE … RENAME INDEX / KEY» и «ALTER TABLE … RENAME COLUMN«.
  • В операции «ALTER TABLE» и «RENAME TABLE» добавлена поддержка условия «IF EXISTS» для выполнения операции только при существовании таблицы;
  • Для индексов в «CREATE TABLE» реализован атрибут «VISIBLE«.
  • Добавлено выражение «CYCLE» для выявления рекурсивных циклов CTE.
  • Добавлены функции JSON_ARRAYAGG и JSON_OBJECTAGG для возвращения массива или объекта JSON со значениями указанного столбца.
  • Добавлены служебные информационные таблицы (THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS и THREAD_POOL_WAITS) для пула потоков (thread_pool).
  • Выражение ANALYZE расширено показом времени, которое тратится на проверку блока WHERE и выполнение вспомогательных операций.
  • В оптимизаторе обработки диапазонов учтены признаки «IS NOT NULL»
  • Существенно сокращён размер временных файлов, используемых при сортировке с типами VARCHAR, CHAR и BLOB.
  • В бинарный лог, используемый для организации репликации, добавлены новые поля с метаданными, включая Primary Key, Column Name, Character Set и Geometry Type. В утилите mariadb-binlog и командах «SHOW BINLOG EVENTS» и «SHOW RELAYLOG EVENTS» обеспечен показ флагов репликации.
  • Конструкция DROP TABLE теперь надёжно удаляет таблицы, остающиеся в движке хранения, даже при отсутствии файлов «.frm» или «.par».
  • Реализован аппаратно ускоренный вариант функции crc32() для CPU AMD64, ARMv8 и POWER 8.
  • Изменены некоторых настойки по умолчанию. Параметр innodb_encryption_threads увеличен до 255, а значение max_sort_length увеличено с 4 до 8.
  • Представлены многочисленные оптимизации производительности движка InnoDB.
  • В механизм синхронной multi-master репликации Galera добавлена полная поддержка GTID (Global Transaction ID), единых для всех узлов кластера идентификаторов транзакций.
  • Осуществлён переход на новую ветку библиотеки PCRE2 (Perl Compatible Regular Expressions), вместо классической серии PCRE 8.x.
  • Предложены новые версии обвязок для подключения к СУБД MariaDB и MySQL из программ на языках Python и C: MariaDB Connector/Python 1.0.0 и MariaDB Connector/C 3.1.9. Обвязка для Python соответствует Python DB API 2.0, написана на языке Си и использует для подключения к серверу библиотеку Connector/C.

Источник: opennet.ru