Описание тега innodb

InnoDB - это ACID-совместимый механизм хранения транзакций для MySQL, который использует MultiVersion Concurrency Control (MVCC). Это механизм хранения по умолчанию для MySQL с версии 5.5.5.

InnoDB - это ACID-совместимый механизм хранения транзакций для MySQL, который использует MultiVersion Concurrency Control ( MVCC) для достижения неблокирующих SELECT и очень высокого уровня параллелизма. Это механизм хранения по умолчанию для MySQL с версии 5.5.5.

MVCC InnoDB поддерживает четыре уровня изоляции транзакций.

  • READ-UNCOMMITTED: позволяет транзакции видеть незафиксированные изменения, сделанные другими транзакциями. Этот уровень изоляции допускает грязное чтение, неповторяющееся чтение и фантомы.
  • READ-COMMITTED: позволяет транзакции видеть изменения, сделанные другими транзакциями, только если они были зафиксированы. Незавершенные изменения остаются невидимыми. Этот уровень изоляции допускает неповторяющиеся чтения и возникновение фантомов.
  • REPEATABLE READ (по умолчанию): убедитесь, что транзакция дважды выполняет один и тот же SELECT, и оба раза она получает один и тот же результат, независимо от зафиксированных или незафиксированных изменений, сделанных другими транзакциями. Другими словами, он получает согласованный результат от разных выполнений одного и того же запроса. В некоторых системах баз данных уровень изоляции REPEATABLE READ допускает фантомы, например, если другая транзакция вставляет новые строки, в инербале между операторами SELECT, второй SELECT их увидит. Это не так для InnoDB; фантомы не возникают для уровня ПОВТОРНОЕ ЧТЕНИЕ.
  • СЕРИАЛИЗАЦИЯ: полностью изолирует эффекты одной транзакции от других. Это похоже на REPEATABLE READ с дополнительным ограничением, что строки, выбранные одной транзакцией, не могут быть изменены другой, пока не завершится первая транзакция.

Вы можете установить уровень изоляции транзакции глобально, для всего сеанса или только для одной транзакции:

SET GLOBAL TRANSACTION ISOLATION LEVEL isolation_level;
SET SESSION TRANSACTION ISOLATION LEVEL isolation_level;
SET TRANSACTION ISOLATION LEVEL isolation_level;

Архитектура InnoDB

Архитектура InnoDB

Базовая инфраструктура InnoDB сосредоточена вокруг трех основных файлов.

  • ibdata1 или системное табличное пространство (см. InnoDB Architecture)
  • ib_logfile0 (см. InnoDB Architecture)
  • ib_logfile1 (см. InnoDB Architecture)

В сочетании со структурами памяти ibdata1 обрабатывает информацию для 6 базовых структур данных.

  • Страницы данных таблицы
  • Индексные страницы таблицы
  • Табличные метаданные (список идентификаторов табличных пространств + дополнительная информация)
  • Записи MVCC
    • Откат сегментов
    • Отменить пробел
  • Двойной буфер записи (разрешает запись фоновой страницы)
  • Вставить буфер (для сбора / обработки изменений во вторичных индексах)

Конфигурации InnoDB могут поддерживать следующие

  • Отделение табличных данных и индексных страниц от системного табличного пространства
  • Сохранение системного табличного пространства в необработанном разделе диска
  • Создание нескольких файлов системного табличного пространства
  • Создание нескольких файлов журнала
  • и более...

Существует важный кеш, известный как пул буферов InnoDB. Начиная с MySQL 5.5, вы можете настроить несколько экземпляров буферного пула. До MySQL 5.5 был только один экземпляр буферного пула.