Назад | Перейти на главную страницу

Что произойдет с таблицами InnoDB и MyISAM, если во время транзакции произойдет сбой питания?

У нас есть две таблицы MySQL, одна - InnoDB, а другая - MyISAM. Если я выполню часть вставок в одной транзакции в обеих таблицах, а в середине произойдет сбой питания, каков будет статус?

Что произойдет с вновь вставленными данными в таблицы InnoDB и MyISAM?

Насколько я понимаю (я не уверен):

  • InnoDB полностью откатит транзакцию.
  • MyISAM сохранит все данные, которые были вставлены до момента отключения электроэнергии.

Innodb - это транзакционная база данных, она сохраняет изменения базы данных в файлах журнала транзакций, используя проверку контрольной суммы, она либо фиксирует, либо откатывает транзакции при следующем перезапуске после сбоя или отключения электроэнергии.

MyISAM не имеет транзакционной системы для отката неудачных транзакций. Таким образом, повреждение базы данных становится серьезной проблемой для нестабильных серверов с нестабильной мощностью.

Если целостность данных и предотвращение конфликтов блокировок (блокировки строк innodb по сравнению с блокировками таблиц myisam) являются обязательными, вы выбираете Innodb.