Подтвердить что ты не робот

Поддержка транзакций движка MyIsam

Я тестировал поддержку транзакций в таблицах innoDB, и только для curriosity я попытался запустить ту же транзакцию в таблице MyIsam, и на удивление это сработало. Я предполагаю, что в myIsam table запросы выполняются один за другим не в одной атомной операции, и я не получаю никаких ошибок из операций START TRANSACTION и COMMIT и ROLLBACK. Мне интересно, движок MyIsam просто игнорирует эти операции или выполняет некоторые действия?

4b9b3361

Ответ 1

MyISAM эффективно работает в режиме автоматической фиксации (так как это не транзакционный движок), и он просто игнорирует фиксацию/откат.

На самом деле механизм хранения - это другой уровень в архитектуре MySQL, отделенный от анализатора SQL, уровень SQL связывается с механизмом хранения с помощью API более низкого уровня и что причина в том, что существует общий SQL и движки, поддерживающие разные подмножества. Вы можете увидеть очень высокоуровневый обзор архитектуры здесь

Ответ 2

Таблицы MyIsam не были созданы для этого. Даже в 5+ версиях. Он предназначен только для хранения данных. Это не дает вам никаких гарантий для транзакций или восстановления данных. Вы должны использовать InnoDB для этого и, при необходимости, использовать MyIsam для целей репликации (быстрее получать данные с помощью таблиц MyIsam, поскольку нет проверки межсетевой таблицы).

Вы можете прочитать этот пост из MySQL http://forums.mysql.com/read.php?21,68686,69229#msg-69229