Форки движка MySQL: MariaDB, Percona. who is who?

    MySQL стал собственностью Oracle, есть ли альтернативы и как быстро движение вперед?.. Вроде как обобщающего обзорчика «who is who?» еще не было. Итак, обзорчик для тех кто «не в теме»

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

    Майкл Видениус (Michael Widenius), основатель MySQL и основатель компании MySQL AB (которую и поглотила Sun, которую и поглотила Oracle)
    Петр Зайцев — эксперт по производительности MySQL, бывший тимлидер группы High Perfomance в MySQL Inc, ведущий блога MySQLPerformanceBlog.com

    Итак, какие существуют альтернативы?

    Percona server — это сборка MySQL (от Петра Зайцева и ко) с включенным по умолчанию XtraDB storage engine. Отличается от MySQL+InnoDB plugin лучшей производительностью/масштабируемостью, особенно на современных многоядерных серверах. Также улучшена функциональность — больше всякой полезной для оптимизации статистики и пр. Собирается в вариантах базирующихся на MySQL 5.0 и 5.1. Полностью совместим с таблицами innodb, то есть можно переходить от innodb к xtradb и обратно без проблем (если не использовать некоторые специфичные для xtradb функции, типа меньшего размера страницы).

    Хранилище XtraDB основано на коде InnoDB-plugin, полностью совместимо с ним, но отличающийся заметно более высокой производительностью, благодаря интеграции патчей от компаний Google и Percona. В частности, в XtraDB улучшен механизм работы с памятью, улучшена работа подсистемы ввода/вывода InnoDB, добавлена поддержка нескольких потоков чтения и записи, поддержка управления пропускной способностью, реализация упреждающей выборкой данных (read-ahead), адаптивная установка контрольных точек (adaptive checkpointing), расширены возможности по масштабированию для больших проектов, система организации блокировок адаптирована для работы на системах с большим числом CPU, добавлены дополнительные возможности для накопления и анализа статистик

    MariaDB — сборка от Монти, синхронизирована с кодовой базой MySQL и полностью с ней совместим, т.е. может выступать в качестве прозрачной замены MySQL 5.1, обладая при этом рядом расширенных функций, включая оптимизации производительности и поставляясь с набором дополнительных движков хранилищ:
    • Новые хранилища данных:
      • Aria (ранее Maria) — основанное на MyISAM высоконадежное хранилище, отличающиеся повышенной устойчивостью и сохранению целостности данных после краха, при полной совместимости с MyISAM
      • OQGRAPH (хранилище для организации сложных графов)
      • Sphinx — хранилище для построения поисковых движков
      • PrimeBase XTописание на русском
      • В качестве замены InnoDB используется движок XtraDB
      • FederatedX — позволяет организовать обращение к удаленным таблицам как к локальным
    • Патчи MyISAM движка — Сегментированный кэш (при высоких нагрузках дает существенный прирост)
    • Виртуальные столбцы
    • Ликвидация таблиц — новый вид оптимизации запросов с использованием JOIN
    • Пул потоков — теперь на одно соединение можно открыть больше одного потока
    • Улучшены Механизмы отладки медленных запросов

    Готовые бинарные сборки MariaDB доступны для платформ Windows, Debian, Ubuntu, RHEL 5, CentOS 5 и Solaris x86.
    Лицензия GPL v2.
    PS В портах FreeBSD всего этого не найти, основной упор делается на Linux. Если кто-то собирал и ставил — поделитесь плиз опытом.

    Дополнительная информация:
    csa: http://blogerator.ru/page/mysql-na-steroidah обзор большего числа различных форков MySQL
    apelsyn: Barracuda InnoDB File Format
    bondbig: MySQL и Google MySQL Customer Google
    Метки:
    Поделиться публикацией
    Похожие публикации
    Комментарии 85
    • +2
      Звучит заманчиво. Кто-нибудь тестил все это дело под серьезной нагрузкой? Насколько готово к продакшену? Особенно интересует XtraDB.
      • +1
        Очевидно, Гугль тестил. Точнее гуглопатчи туда входят. Куда уж серьёзней нагрузки?
      • +7
        Мои коллеги используют перкона сервер на рекламной бирже с 4000 ежесекундных запросах к БД, притом многие из них достаточно тяжеловесны. У перкона сервера есть платный саппорт — пока ни разу не обращались (2 недели), миграцию пережили без существенных артефактов поведения.
        • 0
          Вполне готово. Везде где используется MySQL+InnoDB его можно смело заменять на Percona Server. Цитирую из документации «High-profile users include 37signals, New Relic, and Scribd to name just a few. „
        • НЛО прилетело и опубликовало эту надпись здесь
          • +2
            Серьёзная проблема что этих форков нет в официальных репозитариях.

            Многие бы заменили себе MySQL на один из форков если бы им не пришлось возиться с самостоятельной компиляцией.
            • +1
              появятся, дайте время.
              ну и rpmbuild/dpkg -b никто не отменял.
              • +1
                rpmbuild/dpkg -b — это не выход. За обновлениями необходимо следить самостоятельно. Плюс проблемы с безопасностью — ведь бэкпортированием секьюритификсов из новых версий в старые (если минорное обновление не допустимо) придется заниматься опять же самому. В общем это не для продакшена.
                • +5
                  я имел в виду, что это лучше, чем на пакетном дистре делать ./configure>make>make install
                  Вполне себе для продакшена, если у вас тысячи однотипных серверов, создаем свой локальный репозиторий, следим за апдейтами. Ничего сложного. Когда нависает highload, то лучше так, чем упираться рогом в «нету в офф. репах, как же мы будем жить?»
                  • +4
                    хотите, чтобы за вас грязную работу сделали?
                    станьте мейнтейнером…
                • +6
                  Не знаю, как у MariaDB, но у Percona server есть свои репозитории для Yum и Apt — руками собирать не придется
                  • 0
                    движок этой вики — неужто docuwiki?
                    • 0
                      А что если и так?
                      • 0
                        отличный движок, что вас не устраивает? :)
                        • 0
                          та да, отличный. просто привык к тому что он простой как дверная петля, а тут и шкурка симпатичненькая, и менюшка прыгающая на jquery. не узнать.
                          • +1
                            мы старались :)
                      • +5
                        У MariaDB тоже есть. Ну скажем вот:

                        # MariaDB OurDelta repository for Debian 5.0 «Lenny» binary packages.
                        deb mirror.ourdelta.org/deb lenny mariadb-ourdelta
                        deb-src mirror.ourdelta.org/deb lenny mariadb-ourdelta
                      • 0
                        Gentoo style:
                        echo dev-db/mysql xtradb >> /etc/portage/package.use
                        emerge mysql

                        Уже довольно давно :)

                        .deb и rmp у них на офф сайте давно можно взять.
                        • 0
                          правильный Gentoo-style
                          echo dev-db/mysql xtradb >> /etc/portage/package.use/mysql
                          • 0
                            Почему правильный?
                            • 0
                              потому что рекомендуется использовать отдельные файлы в /etc/portage/package.разное/, а не один файл на use, один файл на keywords и т.д.
                              да и самому так проще разбираться.
                              • 0
                                Разве правильный не через euse из gentoolkit?
                          • 0
                            erelesse@ergil-laptop ~ $ eix maria
                            * dev-db/mariadb
                            Available versions: (~)5.1.42 (~)5.1.42-r1 (~)5.1.50 {big-tables cluster +community debug embedded extraengine latin1 libevent max-idx-128 minimal pbxt +perl profiling selinux ssl static test}
                            Homepage: askmonty.org/
                            Description: MariaDB is a MySQL fork with 3rd-party patches and additional storage engines merged.

                            Ой?
                            • 0
                              У Percona свои репозитарии. Подключайте и пользуйтесь на здоровье.
                            • 0
                              Использую MariaDB вместо mysql.
                              Кстати, в теме не указан движок XtraDB
                              • +2
                                он указан в теме 5 раз
                                • 0
                                  А черт, и правда. Я в итоговом списке не увидел. Пойду просыпаться.
                                  • +3
                                    я ошибся — 7 раз )
                              • +7
                                вот тут рассмотрено немного больше форков: blogerator.ru/page/mysql-na-steroidah
                                • 0
                                  Рассмотрено, но толку от них?
                                  В данной теме только то, что реально можно использовать.
                                  • 0
                                    располагаете тайным знанием? так поделитесь им!
                                    • +2
                                      Почему тайным?
                                      Идем на сайт Drizzle в раздел FAQ:
                                      Can I run a website with this?
                                      No. We are still making incompatible changes, and certainly do not believe the code is production quality.

                                      Далее по списку в статье:
                                      Активность в Ourdelta выдохлась — последний релиз был год назад. По-моему, вследствие появления deb-репозитариев у Percona. Я эту Ourdelta только из-за репозитария выбирал.

                                      ExtSQL — Extended Usage Statistics for SQL. Формально — форк, но со временем Percona подобрала все важные статистические возможности или сделала свои. Последняя активность тоже была год назад.

                                      SkySQL — вообще не форк, а название компании. В той статейке просто для массовки.

                                      NoSQL — очевидно, сеонизаторский прием. Абы впихнуть модное слово в статью и выловить модный трафик.
                                      • 0
                                        спасибо, это уже интересное добавление к обзору :)

                                        >NoSQL — очевидно, сеонизаторский прием.
                                        Это вы про HandlerSocket? По-моему, довольно классная штука — очень красиво оптимизировали узкую задачу — выборку по PK.
                                        • 0
                                          Вот именно, что узковато для большинства пользователей. И что было целью упоминания? Сеонизаторство.
                                          И кстати, в том проекте выборка возможна не только по PK.
                                          • 0
                                            действительно, не только PK, почему-то у меня именно PK отложились в памяти… но тем лучше, задача более широкая, чем я думал :)

                                            упоминание HandlerSocket вполне соотносится с темой обзора: MySQL «на стероидах». не понимаю, что Вы так взъелись на это :)
                                          • 0
                                            Кстати, с недавних пор handler sockets интегрированы в Percona Server :)
                                  • +1
                                    Drizzle?
                                    • 0
                                      MySQL 6 с небольшими модификациями. Не рекомендуется на production.
                                      • 0
                                        в общем случае только GA релизы рекомендованы к продакшену, а 6ке до GA как до {вставить желаемое} пешком.
                                    • +2
                                      FederatedX — преполагается федерирование к mysql-based таблицам? или вообще к любым «сферическим таблицам в вакууме» например через odbc, как у db2
                                      • 0
                                        >Support of other connection protocols other than libmysql
                                        • 0
                                          kb.askmonty.org/v/about-federatedx

                                          >Сurrently, since FederatedX only uses libmysql, it can only talk to another MySQL RDBMS.
                                          • 0
                                            а разве еще этот движок не прикрыли?
                                            • 0
                                              По ссылке написано, что последняя активность была 10 дней назад.
                                              Да и зачем его прикрывать?
                                              • 0
                                                Вы с Federated (встроенным в MySQL) не путаете? Но и он жив, кстати :)
                                                • 0
                                                  да, посмтрел движки в 5.5 — он присутствует.
                                          • 0
                                            Нужно понимать, что опенсорс-проекты из-за постоянной нехватки ресурсов делают только то, что реально нужно. Проблемы связи по odbc решаются однократным импортом-экспортом или на уровне клиентского приложения. Разработка же коммерческих СУБД в немалой степени направлена на удобство работы и создание уникальных фич, с которых потом невозможно слезть.

                                            Поэтому federatedx подразумевает подключение к другому серверу по протоколу mysql. По сравнению с обычным federated (он без всяких форков и в 5.0 есть) исправлены важные принципиальные проблемы.
                                            • 0
                                              Это фактически то же самое, что Federated, но улучшенное и регулярно поддерживаемое: автор Federated ушёл из MySQL и работает над этим движком.
                                            • 0
                                              > В портах FreeBSD всего этого не найти, основной упор делается на Linux. Если кто-то собирал и ставил — поделитесь плиз опытом.
                                              Могу попробовать написать для вас простенький порт.
                                              • 0
                                                Например для MariaDB
                                                • +1
                                                  скажу так: у меня чисто академический интерес, если порт напишите, то могу подбить админа попробовать его поставить в паралель с мускулем и погонять! было бы интересно. Пока получил репорт, что при сборке из сорцов проблем не возникает, мануала пока нет.
                                                  • 0
                                                    Если в паралель, то ставить придётся с префиксом.
                                                • +3
                                                  ТА ДА https://github.com/siasia/mariadb-port

                                                  Сойдёт для сельской местности.
                                                  • +1
                                                    Как и говорил собирать и инсталить нужно с префиксом ибо конфликтует с mysql.
                                                    Например:
                                                    # make PREFIX=/usr/local/mariadb
                                                    # make install PREFIX=/usr/local/mariadb
                                                    • 0
                                                      Между делом порт ушёл в официальный репозиторий.
                                                      www.freebsd.org/cgi/cvsweb.cgi/ports/databases/mariadb/
                                                    • 0
                                                      Ну и что? Ссылка на бинарник Перкона под Фряху. Вы хоть знаете, что такое порты?
                                                      • 0
                                                        Первый раз слышу, ага. Спасибо, что просветили.

                                                        Я имел в виду, что есть готовый бинарник, собирать самостоятельно не обязательно.

                                                        В порты бы добавили, но переписка с мэнтейнерами доставляет. Они никуда не торопятся. Будет, когда-нибудь. xtrabackup уже там
                                                  • +3
                                                    Oracle тоже зашевелился и в версии 5.5 интегрированы патчи от Google, улучшена репликация, InnoDB 1.1 можно использовать новый формат хранения данных Barracuda. Установка google-perftools и сетап LD_PRELOAD также дают заметное увеличение производительности.

                                                    На проектах нашей компании в продакшене используется как MySQL 5.5.xx (да-да он только релиз кандидат но работает достаточно стабильно, хотя были небольшие неприятности) так и Percona Server 5.1.xx

                                                    Платформа Fedora Linux, пересобирается из *.src.rpm
                                                    • +1
                                                      MariaDB вполне стабильно работает в production. Единственный глюк словили — иногда выставляет время работы какое-то совсем неприличное, соответственно, Linux загоняет его в nice 1 где-то.
                                                      • –6
                                                        >К счастью мы уже с вами живем в мире, где информация разносится со скоростью печати мысли и решения находятся молниеносно.

                                                        этот текст не несет смысловой нагрузки. мускуль форкнули благодаря тому что лицензия позволяет.
                                                        • 0
                                                          не совсем так. Изначально MariaDB начинался как независимый проект и то что он стал синхронен с MySQL — решения последующие.
                                                          Да, и вообще: мой текст — моя стилистика, я пишу для того чтобы пообщаться и выразить свои мысли, сделать микро обзорчик в вольной форме, привлечь внимание в конце концов, а не ставлю задачи составить академически верный обзор продукции.
                                                        • 0
                                                          Кстати, кто детально рылся в механизме ликвидации запросов? Если я верно понял, то им удается выкинуть из обработки связывающие таблицы, так как если бы на лету строился view, поправьте меня кто разобрался в деталях.
                                                          • 0
                                                            select t1.d, t3.e from t1, t2, t3, where t1.a=t2.b and t2.b=t3.c;
                                                            очевидно что t2 в запросе не участвует (where можно переписать как t1.a=t3.c and ...) т.о. ее можно выкинуть. Это снизит кол-во рассматриваемых вариантов в оптимизаторе, может ощутимо ускорить выполнение запроса когда во from много таблиц.
                                                            • 0
                                                              > очевидно что t2 в запросе не участвует

                                                              Дану? А как насчёт проверки на существование записи в t2?
                                                            • 0
                                                              и да, оно вроде ликвидация таблиц, а не запросов.
                                                            • 0
                                                              кроме указанного в mariadb еще есть несколько оптимизаций выполнения подзапросов, как во from так и во where, которые отсутствуют в mysql.
                                                              • 0
                                                                Напишите подробнее — вставлю в статью
                                                                • 0
                                                                  mysql сейчас безусловно материализует все подзапросы во from во время открытия таблиц. это ведет к тому что даже explain может занимать оч. много времени из-за материализации. в maria это поправили и вроде релизнули уже. кроме того, в марии подзапросы во from могут мержиться в верхний селект, так же как view, это позволяет выбрать более оптимальный план.
                                                                  мария умеет переписывать подзапросы во where в виде semi-join (описание что это точно есть у постгресс, есть ли у марии не знаю).
                                                                  еще у марии есть продвинутый join cache который позволяет ускорять выполнение join'ов в несколько раз (если удачно сложится).
                                                                  но есть вопрос насколько все это production ready, есть слухи что не на 100% (сам не тестировал).
                                                                  mysql этого пока не умеет
                                                              • +1
                                                                Как раз вчера пробовал поставить MariaDB как замену MySQL. Оказалось что просто так, прозрачно заменить, не получается (пробовал по freebsd 8.0), т.к. по умолчанию (да и по факту) innoDB ставиться как плагин, запустить который не позвезло (потому все таблицы с innoDB стали unknown table engine). Пришлось откатиться назад на mysql и ресерчить вопрос…
                                                                • 0
                                                                  может формат тейбл спейса в марии — баракуда, а у старого мускуля — антилопа?
                                                                  • 0
                                                                    может быть и так… на форуме нашел мысль, что нужно при старте демона принудительно прописывать ему загрузку плагинов… пока не пробовал
                                                                    • 0
                                                                      формат тейбл спеса — не плагин. просто посмоти в глобальных переменных какой формат.
                                                                • 0
                                                                  > Новые хранилища данных:


                                                                  Справедливости ради стои заметить, что некоторые из них давно не новый и Sphinx, PrimeBase XT и FederatedX прекрасно работают с MySQL. Подозреваю, что остальные (как минимум OQGRAPH и XtraDB) тоже.
                                                                  • 0
                                                                    Никак не могу определиться, MariaDB или Percona выбрать. Вроде бы пишут что в MariaDB интегрированы в том числе те же патчи, что и в Percona, плюс ещё свои фишки, так что установив MariaDB я никаких преимуществ из Percona не упущу?
                                                                    На текущий момент из преимуществ нужна расширенная статистика по пользователям, чтобы была возможность выяснить кто больше всего грузит базу.
                                                                    • 0
                                                                      MariaDB включает движок XtraDB. Так что все основные фишки будут, если вы будете его использовать.

                                                                      Percona Server, содержит также некоторое количество общих улучшений, решайте сами насколько они вам нужны — www.percona.com/docs/wiki/percona-server:features:start
                                                                      • 0
                                                                        конкретно вам, похоже нужно вот это — www.percona.com/docs/wiki/percona-server:features:userstatv2

                                                                        Я не знаю, есть ли этот патч в MariaDB
                                                                        • 0
                                                                          В MariaDB он есть kb.askmonty.org/v/mariadb-520-release-notes
                                                                          Пока нужно только это, но в дальнейшем по оптимизации надо дальше куда-то развиваться, вот и никак не определюсь — выбрать путь MariaDB или Percona… Всё же думаю MariaDB будет перспективнее, остановлюсь на нём.
                                                                          • 0
                                                                            а кто может список различий составить перкона vs Марийка!
                                                                      • 0
                                                                        У Percona Server также недавно стали доступны сборки для MacOS:
                                                                        www.percona.com/downloads/TESTING/Percona-Server-55/Percona-Server-5.5.11-20.2/release-5.5.11-20.2/114/MacOSX/binary/
                                                                        • 0
                                                                          Поставили на этой недели Percona Server 5.5.32-31.0. Переходили с MySQL 5.1 — нагрузку в 16000 запросов в минуту прекрасно держит. На одном инстансе сервера развернуто 340 баз. Средний трафик к БД составляет 4,3 mb/s.
                                                                          • 0
                                                                            Сравнивали нагрузку на mysql и перконе?

                                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.