0,0
рейтинг
14 ноября 2010 в 04:51

Разработка → Форки движка 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
Александр Шульман @developer
карма
39,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (85)

  • +2
    Звучит заманчиво. Кто-нибудь тестил все это дело под серьезной нагрузкой? Насколько готово к продакшену? Особенно интересует XtraDB.
    • +1
      Очевидно, Гугль тестил. Точнее гуглопатчи туда входят. Куда уж серьёзней нагрузки?
      • +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
        Ну и что? Ссылка на бинарник Перкона под Фряху. Вы хоть знаете, что такое порты?
        • 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 и перконе?

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