Отказоустойчивость InnoDb против MyISAM - PullRequest
1 голос
/ 01 июля 2019

Мы запускаем сервер MySQL под Windows. Иногда Windows аварийно завершает работу и оставляет базу данных в поврежденном состоянии (сообщения «Дублировать запись для ключа« ПЕРВИЧНЫЙ »», хотя ключ генерируется автоматически; это можно исправить с помощью команды «Восстановить таблицу»).

Я видел эту проблему только с таблицами MyISAM, а не с таблицей InnoDb. Произошло ли это случайно или InnoDb с дополнительным кодом для транзакций на самом деле более устойчив к таким сбоям?

1 Ответ

2 голосов
/ 01 июля 2019

MyISAM не поддерживает ни одно из четырех качеств Базы данных ACID .

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

InnoDB является механизмом хранения по умолчанию с MySQL 5.5.5 в 2010 . Ясно, что MySQL движется (медленно) в направлении постепенного отказа от MyISAM. В MySQL 8.0 даже системные таблицы в схеме mysql были преобразованы в InnoDB.

Настало время просто рассмотреть устаревшую технологию MyISAM и прекратить ее использование. Мы должны почтить его место в истории, но перейти к лучшему решению.

...