Форки движка 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. не узнать.
                    • +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
                                А черт, и правда. Я в итоговом списке не увидел. Пойду просыпаться.
                          • +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 и перконе?

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