intermediate
Storage engines
Знайте, почему InnoDB является default для transactional workloads и когда engine differences влияют на locking и durability.
В MySQL подключаемые storage engines определяют хранение и блокировки. InnoDB — default и правильный выбор для большинства OLTP.
| Движок | Заметки | |--------|---------| | InnoDB | ACID, row-level locking, crash recovery, FK | | MyISAM | Legacy; table locks, без транзакций — не для новых приложений | | MEMORY | Быстрые эфемерные таблицы; теряются при рестарте |
SHOW TABLE STATUS WHERE Name = 'orders';
-- Колонка Engine показывает InnoDB и др.
CREATE TABLE audit_log (
id BIGINT PRIMARY KEY,
payload JSON
) ENGINE=InnoDB;
InnoDB кластеризует первичный ключ с таблицей (clustered index). Вторичные индексы хранят значения PK как указатели — дизайн PK влияет на все lookup. Движок влияет на backup, репликацию и гранулярность блокировок.
На интервью: почему InnoDB default; row vs table locking; когда уместен спецдвижок (MEMORY для temp aggregates).
Типовые ошибки: MyISAM в prod; миф «MyISAM быстрее на чтение»; смешение движков в одном transactional workflow; игнор engine-specific backup.
Компромисс — богатство возможностей и безопасность InnoDB против микровыигрышей устаревших движков без транзакций.
Чеклист:
- Новые таблицы — InnoDB.
- Понимайте clustered PK.
- Аудит legacy через SHOW TABLE STATUS.
- Backup согласован с redo/undo InnoDB.