Autocommit mode в MySQL

Режим autocommit.

Режим autocommit определяет как именно и когда начинаются новые транзакции в базе данных. По умолчанию в MySQL этот режим включен. Это приводит к тому, что каждая новая команда SQL неявно представляет собой новую транзакцию. Если ошибок нет, то изменения сразу записываются на диск, т.е. транзакция будет завершена.

Режим autocommit может быть отключен следующими способами:

SET AUTOCOMMIT = 0;

SET SESSION AUTOCOMMIT = 0;

SET @@AUTOCOMMIT := 0;

После этого необходимо будет вводить команды COMMIT или ROLLBACK, чтобы зафиксировать или откатить произведенные изменения в базе данных. Некоторые команды SQL вызывают неявный commit, что также приводит к завершению транзакции. Подробнее об этом мы рассмотрим в следующем разделе.

Если режим autocommit необходимо отключить только для одной последовательности команд, можно использовать команду BEGIN (START TRANSACTION).

Если используются таблицы, которые не поддерживают транзакции (MyISAM), изменения будут записаны сразу же, независимо от того включен ли режим autocommit или нет. Соответственно, если попробовать сделать ROLLBACK на таких таблицах после их изменения, пользователь получит ошибку (ER_WARNING_NOT_COMPLETE_ROLLBACK).

Начиная с версии MySQL сервера 5.5.8, появилась опция командной строки  –autocommit, которую можно использовать при запуске сервера, и опция autocommit для конфигурационного файла, которая может быть прописана в раздел [mysqld].

[mysqld]
autocommit=0

В предыдущих версиях для задания режима autocommit при старте сервера можно было использовать переменную init_connect.

[mysqld]
init_connect=’SET autocommit=0′

 

Leave a Reply

Your email address will not be published. Required fields are marked *