След година на разработка и три предварителни излъчвания, беше публикуван първият стабилен релиз на новата версия на СУБД 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.
- Подобренa е съвместимостта с СУБД 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
