Сравнение MariaDB и MySQL. Все, что вам нужно знать в 2019 году

MySQL является одной из наиболее широко используемых в мире СУБД. Это программное обеспечение бесплатно и распространяется с открытым исходным кодом. MySQL, разработанный на C/C ++, является одним из самых популярных вариантов баз данных.

СУБД была разработана шведской компанией «MySQL AB» в 1995 году. Позже MySQL AB была приобретена Sun Microsystems в 2008 году. Позже Sun Microsystems была приобретена Oracle в 2010 году. С тех пор MySQL поддерживается и управляется Oracle.

Эта статья — перевод и адаптация англоязычной статьи MariaDB vs MySQL: [2019] Everything You Need to Know.

Во время приобретения Sun Microsystems компанией Oracle некоторые из старших инженеров, которые работали над разработкой MySQL, почувствовали, что существует конфликт интересов между MySQL и коммерческой базой данных Oracle — Oracle Database Server. В результате эти инженеры создали форк базы кода MySQL и основали собственную организацию. Так родилась MariaDB.

На сегодняшний день обе базы данных пользуются большой популярностью и широко используются сообществом разработчиков. MySQL занимает № 2 среди реляционных баз данных и № 2 среди всех СУБД (№ 1 является базой данных Oracle). Напротив, MariaDB немного отстает — № 9 среди реляционных баз данных и № 14 в целом.

Преимущества MariaDB перед MySQL

В MariaDB добавлены оптимизации, которые повышают производительность СУБД по сравнению с оригинальным MySQL.

Представления

В части производительности представлений в MariaDB проделана существенная оптимизация. «Представления» — это, по сути, виртуальные таблицы базы данных, к которым можно обращаться, как к обычным таблицам базы данных. В MySQL при запросе к представлению запрашиваются все таблицы, связанные с этим представлением, независимо от того, что для запроса могут не потребоваться некоторые представления. В отличие от MySQL, в MariaDB, запрашиваются только те таблицы, которые необходимы для запроса.

Колоночное хранилище

MariaDB предоставляет еще одно мощное улучшение производительности, достигаемое с помощью нового типа таблиц, представленных не в форме построчного хранилища, а в форме колоночного хранилища. Колоночные хранилища часто используются в аналитике больших данных. MariaDB позволяет масштабировать хранилище данных до петабайтного размера, обспечивая линейное повышение производительности запросов к хранимых данным при добавлении новых серверов.

Более высокая производительность на SSD

MariaDB предоставляет механизм хранения MyRocks, который позволяет хранить данные в RocksDB. RocksDB — это встраиваемая база данных, которая была разработана для повышения производительности обработки данных, хранимых на SSD-накопителях.

Сегментированный кеш ключей

MariaDB представляет еще одно улучшение производительности — сегментированный кеш ключей. В типичном кеше различные потоки конкурируют за блокировку кэшированной записи. Когда несколько потоков конкурируют за мьютекс, только один из них может получить его, в то время как другим приходится ждать освобождения блокировки перед выполнением операции. Это приводит к задержкам выполнения в этих потоках, замедляя производительность базы данных. В случае сегментированного кэша ключей потоку не нужно блокировать всю страницу, но он может блокировать только тот сегмент, к которому относится страница. Это помогает нескольким потокам работать параллельно, увеличивая параллелизм в приложении, что приводит к повышению производительности базы данных.

Виртуальные столбцы таблицы

Интересная функция, которую поддерживает MariaDB — это виртуальные столбцы. Эти столбцы способны выполнять вычисления на уровне базы данных. Это позволяет перенести типовые вычисления с приложений в сервер СУБД. Эта функция не доступна в MySQL.

Параллельное выполнение запросов

Одна из последних версий MariaDB — 10.0 допускает параллельное выполнение нескольких запросов. Идея состоит в том, что некоторые запросы от Master могут быть переданы на выполнение на ведомые серверы (slave). Этот параллелизм в выполнении запросов, безусловно, обеспечивает MariaDB преимущество над MySQL.

Пул потоков

MariaDB также представляет новую концепцию под названием «Thread Pooling». Ранее, когда требовалось несколько соединений с базой данных, для каждого соединения открывался поток, что приводило к архитектуре «один поток на соединение». С использованием «Thread Pooling» исспользуется пул потоков, которые могут повторно использоваться. Таким образом, новый поток не нужно открывать для каждого нового запроса на подключение, что приводит к более быстрым результатам запроса. Эта функция доступна в коммерческой версии MySQL, но, к сожалению, недоступна в версии для сообщества.

Бэкенды хранения данных

MariaDB предоставляет несколько мощных механизмов хранения, которые не доступны в MySQL. Например, XtraDB, Aria и т. д. Чтобы настроить эти механизмы хранения для MySQL, вам необходимо установить их вручную.

Совместимость

Команда MariaDB гарантирует, что MariaDB сможет заменить MySQL в существующих приложениях. Фактически для каждой версии MySQL они выпускают тот же номер версии MariaDB, чтобы указать, что MariaDB обычно совместима с соответствующей версией MySQL. Это открывает возможность беспрепятственного перехода на MariaDB без каких-либо изменений в кодовой базе приложения.

Заключение

MariaDB, несомненно, достаточно мощный инструмент, который предоставляет множество уникальных функций, отсутствующих в MySQL. MariaDB — зрелый продукт, который может без сомнений использоваться как для повышения производительности так и для внедрения новых возможностей хранения и обработки данных.

Если вы хотите быстро начать использовать MariaDB для тестов или продуктового применения, рассмотрите нашу статью по развертыванию MariaDB в экосистеме Docker.