MySQL - характеристики таблицы InnoDB |
InnoDB это транзакционная база данных с возможностью отмены транзакции, а также с блокировкой доступа на уровне строк. Таблицы InnoDB также позволяют использовать внешние ключи (FOREIGN KEY).
В InnoDB есть свой собственный буфер для кэширования данных и индексов в памяти. Таблицы InnoDB и их индексы находятся в общем хранилище, хранилище может состоять из нескольких файлов. В отличии от MyISAM таблицы InnoDB могут быть любого размера, не зависимо от ограничений операционной системы.
Назначение транзакционной модели InnoDB заключается в том, чтобы совместить лучшие свойства многовариантной базы данных и традиционной двухфазной блокировки. Для таблиц InnoDB осуществляется блокировка на уровне строки и запросы по умолчанию запускаются как целостное считывание без блокировок, подобно тому, как это реализовано в Oracle. Хранение таблицы блокировок InnoDB организовано таким образом что несколько пользователей могут блокировать любую строку или любой набор строк в базе данных, не занимая всю память, доступную для InnoDB.
В таблицах InnoDB все действия пользователей осуществляются при помощи транзакций. Если в MySQL используется режим автоматической фиксации, то для каждого оператора SQL будет создаваться отдельная транзакция. Если режим автоматической фиксации отключен, то мы предполагаем, что у пользователя постоянно имеется открытая транзакция. Если он выполняет оператор SQL COMMIT или ROLLBACK, которые завершают текущую транзакцию, сразу же запускается новая транзакция. Оба упомянутых оператора снимают все блокировки InnoDB, которые были установлены во время выполнения текущей транзакции. Оператор COMMIT означает, что изменения, внесенные во время выполнения текущей транзакции, зафиксированы и становятся видимыми для других пользователей. Оператор ROLLBACK отменяет все изменения, внесенные текущей транзакцией.
|