Поддержка транзакций движка MyIsam
Я тестировал поддержку транзакций в таблицах innoDB, и просто для curriosity я попытался выполнить ту же транзакцию в таблице MyIsam, и на удивление это сработало. Я предполагаю, что в myIsam table запросы выполняются один за другим не в одной атомной операции, и я не получаю никаких ошибок из операций START TRANSACTION и COMMIT и ROLLBACK. Мне интересно, движок MyIsam просто игнорирует эту операцию или выполняет какие-то действия?
- Использование обратных ссылок вокруг имен полей
- Группа Laravel Eloquent по самой последней записи
- MySQL конвертирует дату и время в Unix timestamp
- Ошибка: выберите команду denied для пользователя '' @ '' для таблицы ''
- Как отлаживать время ожидания ожидания ожидания ожидания на сервере MySQL?
- Сохранение hash-значений SHA1 в MySQL
- запятая строка выбранных значений в mysql
- MySQL> Таблица не существует. Но он (или должен)
MyISAM эффективно работает в режиме автоматической фиксации (так как это не транзакционный движок), и он просто игнорирует фиксацию / откат.
Фактически, механизм хранения – это другой уровень в архитектуре MySQL, отделенный от анализатора SQL, уровень SQL связывается с механизмом хранения с API нижнего уровня, и именно по этой причине существуют общий SQL и движки, поддерживающие разные подмножества признанных. Здесь вы можете увидеть очень высокий обзор архитектуры здесь
Таблицы MyIsam не были построены для этого. Даже в 5+ версиях. Он предназначен только для хранения данных. Это не дает вам никаких гарантий для транзакций или восстановления данных. Вы должны использовать InnoDB для этого и, при необходимости, использовать MyIsam для целей репликации (быстрее получать данные с помощью таблиц MyIsam, так как нет проверок перекрестных таблиц).
Вы можете прочитать этот пост из MySQL http://forums.mysql.com/read.php?21,68686,69229#msg-69229