Представлена СУБД MariaDB 5.1.41

18.01.2010 15:22

Майкл Видениус (Michael Widenius), основатель MySQL, сообщил о выходе версии СУБД MariaDB 5.1.41, имеющей отныне статус кандидата в релизы. СУБД MariaDB является ответвлением от MySQL и развивается компанией Monty Program Ab, созданной Майклом Видениусом после его ухода из Sun Microsystems. Серия MariaDB 5.1.x по функциональности совместима с MySQL 5.1.x и основана на той же кодовой базе, что позволяет осуществить миграцию с MySQL на MariaDB без возникновения проблем с совместимостью.

Несмотря на то, что выпуск MariaDB 5.1.41 имеет статус кандидата в релизы, заявлено о достаточно высокой стабильности СУБД, так как с одной стороны в качестве основы выступает стабильный код ветки MySQL 5.1, а с другой все дополнительные возможности уже давно активно используются в промышленной эксплуатации и в достаточно крупных проектах.

Из особенностей MariaDB, по сравнению с MySQL, можно отметить включение в состав следующих хранилищ:

  • Maria - основанное на MyISAM высоконадежное хранилище, отличающиеся повышенной устойчивостью и сохранению целостности данных после краха, при полной совместимости с MyISAM. Благодаря ведению лога операций, в случае краха производится откат результатов выполнения текущей операции. Также поддерживается возможность восстановления состояния из любой точки в логе операций (включая поддержку CREATE/DROP/RENAME/TRUNCATE).
  • В качестве замены InnoDB используется движок XtraDB, основанный на коде InnoDB-plugin и полностью совместимый с ним, но отличающийся заметно более высокой производительностью, благодаря интеграции патчей от компаний Google и Percona. В частности, в XtraDB улучшен механизм работы с памятью, улучшена работа подсистемы ввода/вывода InnoDB, добавлена поддержка нескольких потоков чтения и записи, поддержка управления пропускной способностью, реализация упреждающей выборкой данных (read-ahead), адаптивная установка контрольных точек (adaptive checkpointing), расширены возможности по масштабированию для больших проектов, система организации блокировок адаптирована для работы на системах с большим числом CPU, добавлены дополнительные возможности для накопления и анализа статистики.
  • В состав включено хранилище PBXT (PrimeBase XT), разработанное с нуля и поддерживающее мультиверсионный метод организации хранения данных MVCC (multi-version concurrency control), позволяющий избавиться от блокировок при выполнении операций чтения. PBXT поддерживает ACID-совместимые транзакции, быстрый откат транзакций и восстановление после некорректного завершения работы сервера. Имеются средства для обеспечения ссылочной целостности данных, поддержка определения внешних ключей (foreign key), каскадных обновлений и удалений данных. Поддерживается возможность прямого потокового ввода и вывода бинарных данных (BLOB) в БД.
  • В качестве замены разработанного в Sun Microsystems и уже не поддерживаемого хранилища Federated задействован проект FederatedX. FederatedX позволяет организовать обращение к удаленным таблицам как к локальным. Имеется поддержка транзакций, одновременной установки нескольких соединений к удаленной СУБД, использования операций "LIMIT".

Другие улучшения MariaDB:

  • Реализована возможность создания пула потоков, позволяющего использовать заданное число mysql-нитей для обработки всех запросов, вместо механизма "одна нить на одно соединение". В итоге можно значительно увеличить производительность БД, обрабатывающих большое число соединений или имеющих большое число длительно выполняющихся запросов;
  • Ликвидация таблиц - новый вид оптимизации операций по объединению таблиц (JOIN), позволяющий исключить обращения к некоторым таблицам, на которые ссылается запрос пользователя;
  • Добавлено множество патчей, созданных компанией Percona и сообществом независимых разработчиков. Например, добавлен патч для выявления узких мест при работе с базой. Кроме отслеживания запросов выполняющихся более заданного времени, поддерживается занесение в лог информации о запросах приводящих к перебору большого числа строк, сложным сортировкам, задействованию временного файла на диске или удовлетворяющих параметрам заданного фильтра (qc_miss, full_scan, full_join, tmp_table, tmp_table_on_disk, filesort, filesort_on_disk). В отличии от стандартного механизма ведения лога медленных запросов, msl оперирует не секундами, с округлением в большую сторону, а отрезками 0.005 сек.