Компания Oracle анонсировала стабильный релиз MySQL 5.6
После двух лет тестирования и разработки компания Oracle представила первый стабильный релиз СУБД MySQL 5.6, в котором продолжена работа по улучшению масштабируемости, производительности и гибкости. Наиболее значительные улучшения затронули движок InnoDB, в котором появилась поддержка средств полнотекстового поиска, возможность доступа к данным через memcached API, увеличена производительность работы при интенсивной записи данных, а также увеличена масштабируемость при обработке большого числа одновременных запросов. Помимо коммерческой enterprise-версии для загрузки доступен код MySQL Community Server 5.6.10, распространяемый под лицензией GPL.Ключевые улучшения:
- Реализация интерфейса для прямого доступа к таблицам InnoDB в стиле NoSQL-систем с использованием API, манипулирующего парами ключ/значение и совместимого с memcached. Указанный API позволяет сохранять и получать любые значения таблиц без отправки традиционных SQL-запросов и без траты времени на их парсинг и построение плана выполнения запроса. NoSQL API может использоваться для быстрого выполнения простых выборок или обновления значений, в то время как SQL может применяться для тех же таблиц при выполнении более сложных запросов.
- Возможность создания в InnoDB полнотекстовых индексов для организации быстрого поиска по словоформам среди текстового контента, хранимого в таблицах InnoDB. Ранее полнотекстовый поиск был доступен только для таблиц MyISAM.
- Повешение эффективности оптимизатора запросов, оптимизация процесса выбора результирующего набора значений, сортировки и выполнения запроса. Новые оптимизации Index Condition Pushdown (ICP) и Batch Key Access (BKA) позволяют до 280 раз увеличить пропускную способность выполнения некоторых запросов.
- Расширены средства диагностики работы оптимизатора, добавлена поддержка EXPLAIN для операций INSERT, UPDATE и DELETE. Результаты работы EXPLAIN теперь могут быть выведены в формате JSON. Новый режим трассировки оптимизатора позволяет проследить за каждым принятым решением по оптимизации запроса.
- Дополнительные оптимизации выполнения подзапросов, при которых вложенные запросы вида "SELECT ... FROM table1 WHERE .... IN (SELECT ... FROM table2 ...))" транслируются в более оптимальное представление на стадии до непосредственного выполнения запроса, например, заменяются на более эффективный JOIN.
- Расширение реализация системы диагностики PERFORMANCE_SCHEMA, предоставляющей низкоуровневые средства для мониторинга за выполнением запросов и различными событиями при работе СУБД. PERFORMANCE_SCHEMA позволяет детально оценить узкие места при выполнении длительных запросов, а также представить сводную статистику, сгруппированную по запросам, нитям, пользователям, хостам и объектам.
- Улучшена реализация движка InnoDB, отмечается рост производительности выполнения транзакций и активности с преобладанием операций чтения данных, в некоторых ситуациях ускорение достигает 230%. Проведённый рефакторинг позволили избавиться от узких мест, более оптимально использовать потоки, минимизировать блокировки, обеспечить адаптивный сброс буферов и улучшить логику организации одновременного доступа к данным.
- Возможность добавления индексов и изменения структуры таблиц без негативного влияния на выполнение приложений, связанного с копированием содержимого таблиц и блокировкой операций INSERT, UPDATE и DELETE.
- Улучшение средств репликации. Добавление механизмов самодиагностики для автоматического выявления сбоев и восстановления после них. Обеспечение защищённости репликаций от нарушения целостности в результате краха сервера, после краха бинарный лог и slave-серверы теперь автоматически восстанавливают корректные позиции в потоке репликации и продолжают реплицирование без необходимости вмешательства администратора. Для контроля целостности данных на всех узлах кластера теперь выполняется проверка по контрольным суммам, которые позволяют автоматически выявлять ошибки и предупреждать о них.
- Существенное увеличение производительности репликации при использовании многопоточных slave-систем. В некоторых ситуациях наблюдается пятикратное ускорение репликации. Поддержка внесения в бинарный лог групповых коммитов (Binlog Group Commit), позволяет увеличить производительность репликации за счет отражения изменений в бинарном логе в параллельном режиме, в результате чего коммит со сбросом бинарного лога на диск производится сразу для группы изменений.
- Binlog API, позволяющий бесшовно интегрировать MySQL с внешними хранилищами данных и приложениями, путем организации прямой репликации в данные системы. Например, можно подключить свой обработчик, накапливающий статистику по потокам данных в СУБД, при этом экспорт данных в такой обработчик настраивается в виде репликации. Binlog API предоставляет все средства, необходимые для чтения и декодирования используемого в процессе репликации бинарного лога.
- Режим отложенной репликации, позволяющий реплицировать данные не сразу, а с определённой задержкой, что позволяет обеспечить защиту от ошибок оператора (например, случайное удаление содержимого таблиц).
- Поддержка опций для ручной или автоматической предварительной загрузки содержимого пула буферов InnoDB, что позволяет после перезапуска существенно сократить время "прогрева" сервера (т.е. позволяет сразу использовать ранее накопленный кэш и статистику, без ожидания пока нужные данные накопятся в процессе работы).
- Увеличение максимального размера файлов с логами изменений (InnoDB Redo Log) с 4 Гб до 2 Тб, что позволяет повысить производительность при обеспечении работы приложений, интенсивно записывающих данные или выполняющих длительные транзакции (за счет снижения задержек в процессе ротации лога транзакций).
© OpenNet