InnoDB storage engine в MySQL.
Как уже было сказано в разделе “Storage engines в MySQL“? в MySQL, начиная с версии 5.5, “движком” по умолчанию является InnoDB, который заменил MyISAM. InnoDB встроен в ядро MySQL сервера, т.е. не нужно подключать никаких специальных плагинов для его использования.
InnoDB обладает довольно высокой надежностью и высокой производительностью. К его основным преимуществам можно отнести следующие:
- Поддержка транзакционной модели, совместимой с требованиями ACID, позволяющая выполнять команды управления транзакциями COMMIT, ROLLBACK, а также осуществлять восстановление после сбоев (crash-recovery) для защиты пользовательских данных.
- MVCC (MultiVersion Concurrency Control) – управление конкурентным доступом с помощью мультиверсионности. т.е. предоставление пользователям “снимка БД”, где не отражены незавершенные транзакции других пользователей. В одной из следующих тем рассмотрим это подробнее.
- Поддержка блокировок на уровне строк.
- Поддержка внешних ключей, включая каскадные delete и update.
- Качественная работа с I/O (ввод/вывод), вытекающая из некоторых особенностей InnoDB. Во-первых, организация хранения табличных данных на дисках была специальным образом оптимизирована для запросов. Во-вторых, наличие собственного буферного пула в памяти позволяет закэшировать таблицы и индексы, что позволяет уменьшить количество обращений к дискам (I/O).
- Возможность использования смешанных запросов, т.е. в одном запросе могут использоваться и таблицы с InnoDB, и таблицы с другими storage engine, например MEMORY.
- Улучшенная защита от сбоев. Быстрое и автоматическое восстановление после сбоев.
- Поддержка согласованного и горячего (online) логического бекапа.
Эти преимущества и служат причиной выбора InnoDB и разработчиками, и администраторами.