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

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

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

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

решение1

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

MyISAM не имеет транзакционной системы для отката неудачных транзакционных фиксаций. Поэтому повреждение базы данных становится серьезной проблемой на нестабильных серверах с нестабильным питанием.

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

решение2

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

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

Связанный контент