После двух лет разработки компания Oracle объявила о выходе первого стабильного релиза СУБД MySQL 5.5.8. Ветка MySQL 5.5 базируется на невыпущенной серии MySQL 5.4 и содержит ряд значительных улучшений, связанных с повышением масштабируемости и производительности. В анонсе компания Oracle подчеркнула свое намерение дальнейшего развития MySQL в качестве открытого продукта, развиваемого совместно с СУБД Oracle и нацеленного на обеспечения связанных с Web систем. Одновременной с enterprise-версией, доступна аналогичная по функциональности свободная редакция MySQL - MySQL Community Server 5.5.8, исходные тексты которой распространяются в рамках лицензии GPL.
Ключевые улучшения MySQL 5.5:
Улучшение производительности и масштабируемости (по сравнению с веткой MySQL 5.1 производительность смешанных операций записи/чтения возросла в 3.6 раза, а операций только чтения - в 2 раза);
Использование по умолчанию движка InnoDB;
Поддержка полусинхронного (semi-synchronous) механизма репликации, основанного на патчах к InnoDB от компании Google. Метод является разумным компромиссом между надежностью синхронной репликации и скоростью асинхронной. Новый режим гарантирует распространение изменений как минимум на один slave узел, т.е. репликация считается успешной если хотя бы один узел подтвердил принятие данных;
Поддержка создания отказоустойчивых конфигураций из нескольких синхронизированных серверов, базирующихся на использовании Heartbeat и DRBD;
Реализация операторов SIGNAL и RESIGNAL - новых способов обработки ошибок в функциях, триггерах и обработчиках событий;
Улучшение функций по партицированию данных. Расширенный синтаксис для разбиения больших таблиц на несколько частей, размещенных в разных файловых системах (partitioning). Добавлены операции RANGE, LIST и метод оптимизации "partition pruning";
Новый механизм оптимизации вложенных запросов и JOIN операций, повышающий скорость выполнения некоторых запросов на 90%;
Переработана система внутренних блокировок. Интегрированы патчи Google с оптимизацией работы InnoDB на CPU с большим числом ядер. Например, на 16 и 64 ядерных серверах наблюдается почти двойной прирост производительности. Ранее код InnoDB не мог корректно использовать более 4 CPU;
Включение в MySQL схемы производительности, которая содержит низкоуровневую информацию о производительности работы движка InnoDB.
Указание типа хранилища через ключевое слово "TYPE" в блоке "CREATE TABLE" объявлено устаревшим, необходимо использовать директиву "ENGINE";
Улучшены средства работы с XML-данными, добавлен оператор "LOAD XML";
Улучшения в управлении метаданными при выполнении транзакций;
Новый алгоритм формирования запроса, более оптимально использующий оперативную память для выполнения JOIN операций при использовании MySQL Cluster;
Улучшена реализация встраиваемых процедур, добавлены полноценные средства для управления ошибками через реализацию SIGNAL/RESIGNAL функций;
Добавлена поддержка задания параметров вывода при использовании заранее подготовленных выражений (prepared statement);
Расширены возможности по доступу к данным информационной схемы для разработчиков, использующих программные интерфейсы подобные ODBC и JDBC. Например, расширен доступ к параметрам и возвращаемым типам данным, которые используются в хранимых процедурах;
Улучшена поддержка платформы Solaris, расширены средства диагностики, базирующиеся на DTrace;
Переход на систему сборки на основе CMake, поддержка сборки при помощи GNU autotools прекращена (вместо configure теперь нужно выполнить "cmake .") .