Транзакция представляет собой последовательность операций с базой данных, которые выполняются как единое целое. Рассмотрим основные методы открытия транзакций в различных СУБД.

Содержание

Основные понятия транзакций

Свойства транзакций (ACID)

СвойствоОписание
Atomicity (Атомарность)Все операции транзакции выполняются или не выполняются
Consistency (Согласованность)Транзакция переводит базу из одного согласованного состояния в другое
Isolation (Изолированность)Транзакции не мешают друг другу
Durability (Долговечность)Результаты завершенных транзакций сохраняются после сбоев

Синтаксис открытия транзакции

В SQL-серверах

  • MySQL/MariaDB: START TRANSACTION или BEGIN
  • PostgreSQL: BEGIN или START TRANSACTION
  • Oracle: SET TRANSACTION или просто BEGIN
  • SQL Server: BEGIN TRANSACTION

Пример для MySQL

  1. START TRANSACTION;
  2. INSERT INTO accounts (user, balance) VALUES ('user1', 1000);
  3. UPDATE accounts SET balance = balance - 100 WHERE user = 'user2';
  4. COMMIT; -- или ROLLBACK при ошибке

Уровни изоляции транзакций

Доступные уровни

УровеньОписание
READ UNCOMMITTEDЧтение незафиксированных данных
READ COMMITTEDЧтение только зафиксированных данных
REPEATABLE READПовторяемое чтение
SERIALIZABLEСериализуемые транзакции

Установка уровня изоляции

  • MySQL: SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
  • PostgreSQL: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
  • SQL Server: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Работа с транзакциями в приложениях

Пример на Python (psycopg2 для PostgreSQL)

  1. Установить соединение с базой данных
  2. Создать объект cursor
  3. Выполнить BEGIN TRANSACTION
  4. Выполнить SQL-запросы
  5. Подтвердить (commit) или откатить (rollback) изменения
  6. Закрыть соединение

Обработка ошибок

СитуацияДействие
Успешное выполнениеCOMMIT
Ошибка в одном из запросовROLLBACK
Потеря соединенияАвтоматический ROLLBACK

Рекомендации по работе с транзакциями

Лучшие практики

  • Делайте транзакции как можно короче
  • Избегайте пользовательского ввода во время транзакции
  • Используйте подходящий уровень изоляции
  • Всегда обрабатывайте возможные ошибки
  • Тестируйте работу с откатами

Правильное использование транзакций обеспечивает целостность данных и защищает от частичного выполнения операций при сбоях. Выбор конкретного подхода зависит от используемой СУБД и требований приложения.

Запомните, а то забудете

Другие статьи

Как открыть пункт выдачи заказов AliExpress и прочее