MariaDB - Транзакции

Транзакции - это последовательные групповые операции. Они функционируют как единое целое и не завершаются, пока все операции в группе не будут выполнены успешно. Единичный сбой в группе приводит к сбою всей транзакции и не влияет на базу данных.

Транзакции соответствуют ACID (атомарность, согласованность, изоляция и долговечность) -

  • Atomicity - Обеспечивает успешное выполнение всех операций за счет прерывания при сбоях и отката изменений.

  • Consistency - Это гарантирует, что база данных применяет изменения при успешной транзакции.

  • Isolation - Позволяет проводить независимые транзакции, операции транзакций.

  • Durability - Обеспечивает сохранение успешной транзакции в случае сбоя системы.

В начале оператора транзакции находится оператор START TRANSACTION, за которым следуют операторы COMMIT и ROLLBACK -

  • START TRANSACTION начинает транзакцию.

  • COMMIT сохраняет изменения в данных.

  • ROLLBACK завершает транзакцию, уничтожая любые изменения.

При успешной транзакции действует COMMIT. В случае сбоя действует ROLLBACK.

Note- Некоторые операторы вызывают неявную фиксацию, а также вызывают ошибку при использовании в транзакциях. Примеры таких операторов включают, но не ограничиваются ими, CREATE, ALTER и DROP.

Транзакции MariaDB также включают такие параметры, как SAVEPOINT и LOCK TABLES. SAVEPOINT устанавливает точку восстановления для использования с ROLLBACK. LOCK TABLES позволяет контролировать доступ к таблицам во время сеансов, чтобы предотвратить изменения в определенные периоды времени.

Переменная AUTOCOMMIT обеспечивает контроль над транзакциями. Значение 1 заставляет все операции считаться успешными транзакциями, а значение 0 вызывает сохранение изменений только в явном операторе COMMIT.

Структура транзакции

Общая структура отчета о транзакции начинается с START TRANSACTION. Следующим шагом является вставка одной или нескольких команд / операций, вставка операторов, которые проверяют наличие ошибок, вставка операторов ROLLBACK для управления любыми обнаруженными ошибками и, наконец, вставка оператора COMMIT для применения изменений при успешных операциях.

Просмотрите пример, приведенный ниже -

START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;