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

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

  • Добавлена экспериментальная поддержка движка хранения MyRocks, разработанного Facebook на базе системы хранения RocksDB, оптимизированной для Flash-накопителей. В хранилище MyRocks применяются страницы данных плавающего размера, позволяющие избежать выравнивания по фиксированной границе блока, и модель хранения данных в форме лога (Log Structured Merge Trees), допускающая только дополнение (чистка производится сборщиком мусора). В процессе выполнения запросов в несколько раз сокращается число операций случайного чтения/записи, что приводит к увеличению производительности по сравнению с InnoDB на 20-30% на SDD и до 6 раз на НЖМД при нагрузке с большим числом операций случайной записи. Кроме того, MyRocks позволяет на 50% сократить размер БД по сравнению со сжатым хранилищем InnoDB и в 3.5 раза по сравнению с InnoDB без применения сжатия. Из недостатков MyRocks можно отметить отсутствие поддержки внешних ключей и полнотекстовых индексов;
  • Добавлена поддержка оконных функций, задаваемых ключевым словом OVER и позволяющих совершить вычисление над набором строк, связанных с текущей строкой. По аналогии с агрегатными функциями оконные функции позволяют обратиться к другим строкам в процессе обработки результата запроса, но в отличие от агрегатных функций они не группируют результат в одну строку;
  • Поддержка общих табличных выражений (выражение "WITH") и рекурсивных общих табличных выражений ("WITH RECURSIVE"). Секцию WITH можно использовать для определения подзапросов как локальных временных таблиц, на которые можно много раз ссылаться в запросе. "WITH RECURSIVE" позволяет обращаться к собственному результату, например, можно организовать обход дерева в процессе выполнении запроса;
  • Добавлено выражение "CONSTRAINT... CHECK" в блоке "CREATE TABLE" для задания ограничений столбца;
  • Реализована возможность указания выражений в блоке DEFAULT, например "b int DEFAULT (a+1)". Обеспечена поддержка указания значений DEFAULT для полей BLOB и TEXT;
  • Хранилище InnoDB обновлено до выпуска из состава MySQL 5.7.18 и задействовано по умолчанию (ранее по умолчанию предлагалось ответвление от InnoDB - XtraDB, смысл использования которого потерялся после того, как в InnoDB реализовали большинство основных возможностей XtraDB). В InnoDB добавлена поддержка пространственных индексов (spatial index);
  • Добавлено выражение "SHOW CREATE USER", показывающее полное выражение "CREATE USER", использованное для создания указанного пользователя;
  • Для выражения "CREATE USER" реализованы опции для ограничения потребления ресурсов и настройки tls/ssl. Например, теперь можно ограничить максимальное число запросов или соединений в час;
  • Представлено новое выражение "ALTER USER", позволяющее внести изменения в учётную запись существующего пользователя;
  • Сняты многие ограничения для виртуально вычисляемых столбцов;
  • Добавлена поддержка выражения "EXECUTE IMMEDIATE" для запуска динамического SQL-выражения, созданного на лету;
  • В оператор PREPARE добавлена возможность использования большинства выражений;
  • Добавлены функции для работы с данными в формате JSON;
  • Добавлен плагин аутентификации, использующий алгоритм ed25519 для хранения паролей;
  • В состав сборок для Windows, CentOS, RHEL и Fedora добавлен плагин для расшифровки ключей, используемых в Amazon Web Services (AWS) Key Management Service (KMS), для их последующего использования для шифрования данных в БД;
  • Появилась возможность привязки нескольких разных триггеров к одному событию;
  • Добавлена поддержка отложенной репликации, при которой состояние slave-сервера на заданный промежуток времени отстаёт от master-сервера;
  • Переработана реализация выражения ANALYZE TABLE, которое теперь не блокирует таблицу во время сбора статистики;
  • Библиотека wsrep, используемая для организации синхронной multi-master (active-active) репликации Galera, обновлена до выпуска 25.3.20;
  • Обеспечено формирование пакетов для Ubuntu 17.04;
  • В mysqldump добавлена опция "--add-drop-trigger", воспроизводящая функциональность MySQL 5.6 по добавлению в SQL-дамп выражения для удаления триггера перед его созданием;
  • Добавлен скрипт mysqlbinlog для организации непрерывного бэкапа бинарного лога. Скрипт поддерживает режим flashback, при помощи которого можно откатить состояние БД или отдельной таблицы на ранее созданный снапшот;
  • Сокращено время установки соединений за счёт выноса создания дескриптора соединений (THD) в отдельную нить и увеличения эффективности кэширования. В некоторых случаях ускорение может достигать 85%;
  • Добавлена поддержка OpenSSL 1.1 и LibreSSL;
  • Добавлены переменные innodb_deadlock_detect и innodb_stats_include_delete_marked для отключения система определения взаимных блокировок и учёта записей, помеченных как удалённые, при расчёте статистики;
  • Добавлена переменная read_binlog_speed_limit, задающая ограничение скорости с которой slave-сервер читает бинарный лог master-сервера;
  • Удалена старая клиентская библиотека, поставляемая под лицензией GPL, на смену которой пришла новая библиотека, имеющая лицензию LGPL.


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