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

Увидел свет релиз 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 — данные реплицируются, а когда в flase — нет;
  • Хранилище 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 можно посмотреть на данной странице.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

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

Увидел свет релиз 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 — данные реплицируются, а когда в flase — нет;
  • Хранилище 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 можно посмотреть на данной странице.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.