Транзакционный DML невозможен до MySQL 8.0. В этой версии есть «Словарь данных», который хранится в таблицах InnoDB. (Я не хочу думать о необходимом bootstrap!) DD позволяет, по крайней мере теоретически, ROLLBACK
действий DDL, таких как ALTER
и DROP TABLE
. Изучите 8.0 документов, чтобы увидеть, достаточно ли это для ваших нужд.
В прошлом (до 8.0) многие операции DML были по меньшей мере разумными "cra sh безопасными". Например, ALTER
используется для копирования таблицы, а затем для быстрой замены новой таблицы. Это обеспечило достаточно хороший способ восстановления после взлома sh во время ALTER
.
. С 5,66 было внесено много существенных улучшений в ALTER
. До этого единственным действительно «мгновенным» изменением было добавление опции к ENUM
, и это имело предостережения. Есть еще вещи, которые требуют полного, трудоемкого перестроения таблицы - например, любое изменение операций
. *1013*
DML должно быть сведено к минимуму; они не предназначены для частого использования.