The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Стабильный релиз СУБД MariaDB 5.5

12.04.2012 19:23

Увидел свет релиз MariaDB 5.5.23, первый стабильный релиз ветки 5.5.x, основанной на кодовой базе MySQL 5.5 и содержащей все ранее представленные в ветке MariaDB 5.3 улучшения и дополнения. Проект развивается компанией Monty Program Ab, созданной Майклом Видениусом, основателем MySQL, после его ухода из Sun Microsystems. Код MariaDB синхронизирован с кодовой базой MySQL, полностью совместим с данной СУБД и может выступать в качестве прозрачной замены MySQL 5.5, дополненной рядом расширенных функций, оптимизациями производительности, новыми движками хранилищ (FederatedX, PBXT, XtraDB, Aria, OQGRAPH, Sphinx) и патчами от сообщества независимых разработчиков.

Среди улучшений, добавленных в MariaDB 5.5, которые отсутствуют в MariaDB 5.3 и MySQL 5.5, можно отметить:

  • Интеграция более эффективного аналога коммерческого дополнения "Thread Pool", представляемого в продукте MySQL Enterprise. Thread Pool представляет собой реализацию новой высокомасштабируемой модели многопоточной обработки, нацеленной на сокращение издержек при обслуживании соединений клиентов и при ответвлении выполняющих запросы потоков. Наиболее заметное повышение производительности демонстрируется при выполнении высоконагруженных web-приложений, обслуживающих большое число параллельных запросов, в сочетании с работой на серверах, имеющих 16 и более процессорных ядер;
  • Включение в состав библиотеки с реализацией неблокирующего клиенского API. Неблокирующий API позволяет отправить запрос к СУБД и не дожидаясь его завершения сразу перейти к дальнейшим действиям. После того как будет готов результат запроса, приложение будет информировано через callback-вызов. Подобный подход оправдан когда нужно выполнить одновременно несколько независимых запросов к базе, обратиться к нескольким СУБД или сформировать запросы из приложений, изначально написанных в соответствии с неблокирующим стилем разработки, например, использующих libevent или event loop. Новый API реализован исключительно на уровне клиентской библиотеки и не требует от сервера какой-либо дополнительной функциональности, что позволяет использовать неблокирующий API с любыми выпусками MariaDB и MySQL. Библиотека также полностью совместима с уже собранными приложениями на уровне API и ABI;
  • Поддержка опции @@skip_replication для выборочного пропуска изменений, которые не нужно реплицировать на другие серверы или помещать в binlog. Когда переменная установлена в значение true - данные реплицируются, а когда в false - нет;
  • Хранилище Sphinx обновлено до версии 2.0.4 (ранее была интегрирована версия 0.9.9);
  • В хранилищах XtraDB и InnoDB реализована поддержка расширенных ключей ("extended keys");
  • Поддержка выражения INSTALL SONAME, сходное по своему действию с INSTALL PLUGIN, но выполняющее действие по установке всех плагинов из указанной библиотеки;
  • Новая оптимизация "LIMIT [offset, row_count] ROWS EXAMINED rows_limit" которая позволяет остановить выполнение запроса SELECT после перебора заданного через rows_limit числа столбцов;
  • Возможность динамического использования переменных replicate_do_*, replicate_ignore_* и replicate_wild_*, т.е. их изменение больше не требует перезапуска сервера;
  • Изменение логики работы функции mysql_real_connect(), которая теперь сохраняет в объекте MYSQL значения выставленных до вызова данной функции опций даже если вызов завершился неудачей, т.е. обнуление производится только после выполнения mysql_close().

Дополнительно можно отметить выпуск обновлений для ранее выпущенных и ещё поддерживаемых стабильных веток - MariaDB 5.3.6, 5.1.62 и 5.2.12 в которых устранена опасная уязвимость, позволяющая клиенту при определённых обстоятельствах подсоединиться к БД без ввода корректного пароля. Данная уязвимость также присутствует в MySQL и будет устранена в ближайшем обновлении. Кроме того, в выпущенном недавно MySQL 5.5.22 были исправлены две уязвимости, подробности о которых не приводятся.

Ранее реализованные улучшения, отличающие MariaDB от MySQL:

  • Дополнительные движки хранилищ:
    • Aria (ранее Maria) - основанное на MyISAM высоконадежное хранилище, отличающееся повышенной устойчивостью и сохранению целостности данных после краха, при полной совместимости с MyISAM. Благодаря ведению лога операций, в случае краха производится откат результатов выполнения текущей операции. Также поддерживается возможность восстановления состояния из любой точки в логе операций (включая поддержку CREATE/DROP/RENAME/TRUNCATE).
    • 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) в БД;
    • FederatedX - позиционируется в качестве замены разработанного в Sun Microsystems и уже не поддерживаемого хранилища Federated. FederatedX позволяет организовать обращение к удаленным таблицам как к локальным. Имеется поддержка транзакций, одновременной установки нескольких соединений к удаленной СУБД, использования операций "LIMIT";
    • OQGRAPH - хранилище для организации иерархических (древовидных) структур и сложных графов (узлов, имеющих множество связей);
    • Sphinx - хранилище для построения поисковых движков. Встроенный Sphinx-клиент позволяет MariaDB обмениваться данными с searchd, выполнять поисковые запросы и получать результаты поиска;
  • Виртуальные столбцы, содержимое которых формируется на основе заданного выражения, рассчитываемого во время выполнения;
  • Расширенная статистика об активности клиентов, пользователей, индексов и таблиц;
  • Сегментированный кэш MyISAM-ключей - глобальный мьютекс разбит на несколько мьютексов, что дает существенный прирост производительности (до 70%) в системах с большой нагрузкой из параллельных запросов;
  • Подключаемые модули аутентификации - возможность реализации плагинов, которые могут добавлять новые методы аутентификации в MariaDB;
  • Привязанные к типу хранилищ выражения "CREATE TABLE", дающие возможность определить передаваемые хранилищу дополнительные атрибуты для каждого поля, индекса или таблицы;
  • Возможность создания пула потоков, позволяющего использовать заданное число mysql-нитей для обработки всех запросов, вместо механизма "одна нить на одно соединение". В итоге можно значительно увеличить производительность БД, обрабатывающих большое число соединений или имеющих большое число длительно выполняющихся запросов;
  • Ликвидация таблиц - новый вид оптимизации операций по объединению таблиц (JOIN), позволяющий исключить обращения к некоторым таблицам, на которые ссылается запрос пользователя;
  • HandlerSocket - реализация интерфейса прямого доступа к таблицам InnoDB/XtraDB в стиле NoSQL-систем. Поддерживаются такие операции, как добавление, обновление, чтение и удаление ключа;
  • Поддержка динамических столбцов, позволяющих получить различный набор "виртуальных столбцов" для каждой строки в таблице;
  • Добавлено множество патчей, созданных компанией Percona и сообществом независимых разработчиков. Например, добавлен патч для выявления узких мест при работе с базой. Кроме отслеживания запросов выполняющихся более заданного времени, поддерживается занесение в лог информации о запросах приводящих к перебору большого числа строк, сложным сортировкам, задействованию временного файла на диске или удовлетворяющих параметрам заданного фильтра (qc_miss, full_scan, full_join, tmp_table, tmp_table_on_disk, filesort, filesort_on_disk). В отличии от стандартного механизма ведения лога медленных запросов, msl оперирует не секундами, с округлением в большую сторону, а отрезками 0.005 сек.
  • Множество оптимизаций, общий обзор которых по сравнению с MySQL можно посмотреть на данной странице.


  1. Главная ссылка к новости (http://monty-says.blogspot.com...)
  2. OpenNews: Стабильный релиз СУБД MariaDB 5.3 и тестовая версия MariaDB 5.5
  3. OpenNews: Релиз СУБД MariaDB 5.2.7
  4. OpenNews: В MariaDB добавлена поддержка динамического создания столбцов
  5. OpenNews: Доступен стабильный релиз СУБД MariaDB 5.2
  6. OpenNews: Опубликованы правила использования торговой марки MariaDB
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/33589-mariadb
Ключевые слова: mariadb, mysql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, chemtech (ok), 19:46, 12/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Интересно почему нет в пакетной базе Debian...
     
     
  • 2.6, Аноним (-), 21:12, 12/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что никто не запилил пакет.

    // КО

     
     
  • 3.21, chemtech (ok), 05:38, 13/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что никто не запилил пакет.
    > // КО

    Это понятно. Не понятно то почему "Monty Program Ab" не хочет распространить свой продукт в более широкие массы...


    P.S. Есть сторонний репозиторий:

    # MariaDB repository list - created 2012-04-13 01:39 UTC
    # http://downloads.askmonty.org/mariadb/repositories/
    deb http://mirror.de.gsnw.de:56431/mariadb/repo/5.5/debian squeeze main
    deb-src http://mirror.de.gsnw.de:56431/mariadb/repo/5.5/debian squeeze main

     

  • 1.2, Аноним (-), 19:58, 12/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Мощный ченжлог. Старина Видениус впахивает :)
     
     
  • 2.13, fetisheer (ok), 21:48, 12/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Мощный ченжлог. Старина Видениус впахивает :)

    На самом деле в данном проекте он выступает скорей спонсором, чем разработчиком.

     
     
  • 3.16, Аноним (-), 23:12, 12/04/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И на том спасибо. А был бы на его месте Ваня - он бы только заграбастал и отполз в свой уголок. Правда таким в силу общей тупости такое не светит, но все-таки.
     

  • 1.3, Аноним (-), 20:37, 12/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Где-нибудь тесты - сравнения MyISAM и Aria можно посмотреть?
     
     
  • 2.9, fetisheer (ok), 21:37, 12/04/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Тестов не видел, но разработчики aria говорят, что пока производительность станет приоритетом только при разработке версии 2.5, до этого планируют чистить код и внедрять транзакционность без оглядки на производительность.

    Сам я пробовал парочку таблиц переводить на aria с myisam, таблицы были fixed. По скорости запросов разница на уровне погрешности. При вставке же достаточно значительно увеличилось количество операций io (по графикам очень четко видно).

     
     
  • 3.12, Аноним (-), 21:47, 12/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо.
     
  • 3.19, ананим (?), 01:42, 13/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >При вставке же достаточно значительно увеличилось количество операций io

    хм. какбы это:
    >Благодаря ведению лога операций, в случае краха производится откат результатов выполнения текущей операции. Также поддерживается возможность восстановления состояния из любой точки в логе операций (включая поддержку CREATE/DROP/RENAME/TRUNCATE).

    намекает что чудес не бывает.

     
     
  • 4.24, fetisheer (ok), 11:28, 13/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>При вставке же достаточно значительно увеличилось количество операций io
    > хм. какбы это:
    >>Благодаря ведению лога операций, в случае краха производится откат результатов выполнения текущей операции. Также поддерживается возможность восстановления состояния из любой точки в логе операций (включая поддержку CREATE/DROP/RENAME/TRUNCATE).
    > намекает что чудес не бывает.

    Здесь фокус в том, что при переводе этих же таблиц на innodb io возрастает гораздо меньше, а в innodb журнал ведется тоже.

     

  • 1.4, Аноним (-), 20:46, 12/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Можете тесты не смотреть поверьте на слово MariaDB намного производительнее обычного MySQL
     
     
  • 2.10, fetisheer (ok), 21:42, 12/04/2012 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Можете тесты не смотреть поверьте на слово MariaDB намного производительнее обычного MySQL

    Во многих случаях это так, но не всегда. Например, у меня есть запрос, который исполняется за тысячные доли секунды и включает в себя подзапрос. Когда поставил MariaDB, то этот запрос "оптимизировался" и стал выполняться так же как если бы был реализован с помощью join, в результате скорость выполнения запроса составила полторы секунды. optimizer_switch = 'semijoin=off' пришлось добавить для выправления ситуации.

     

  • 1.5, XPEH (?), 20:55, 12/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Включение в состав библиотеки с реализацией неблокирующего клиенского API.

    Ну наконец-то.

     
     
     
    Часть нити удалена модератором

  • 3.29, пескарь (?), 21:03, 13/04/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Ещё лет 10 и догонят постгрес по функционалу.
    > Мля, давайте сразу оракл всем всучивать. Для хранения десятка постов в личном
    > бложике, чо.

    как будто это что-то плохое.

     

  • 1.25, igor_b (?), 14:12, 13/04/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто использовал сабж может подсказать: временные таблицы можно использовать повторно в одном запросе? В mysql для меня это большое неудобство. При запросе выдает ошибку: Can't reopen table ...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру