кодесурса
«SQL

Транзакция SQL

script1adsense2code
script1adsense3code

Вступление

Транзакция - это последовательность операций, выполняемых (с использованием одного или нескольких операторов SQL) над базой данных как единая логическая единица работы. Эффекты всех операторов SQL в транзакции могут быть либо зафиксированы (применены к базе данных), либо полностью отменены (отменены из базы данных). Транзакция базы данных должна быть атомарной, последовательной, изолированной и долговечной. Позже мы обсудили эти четыре момента.

Чтобы понять концепцию транзакции, рассмотрим банковскую базу данных. Предположим, что клиент банка переводит деньги со своего сберегательного счета (SB a / c) на свой счет овердрафта (OD a / c), выписка будет разделена на четыре блока:

  • Дебет СБ а / с.
  • Кредит ОД а / к.
  • Запись в журнале транзакций
  • Завершение транзакции

Оператор SQL для дебетования SB a / c выглядит следующим образом:

ОБНОВЛЕНИЕ sb_accounts
SET баланс = баланс - 1000
ГДЕ account_no = 932656;

Оператор SQL для кредитования OD A / C выглядит следующим образом:

ОБНОВЛЕНИЕ od_accounts
SET баланс = баланс + 1000
ГДЕ account_no = 933456;

Оператор SQL для записи в журнале транзакций выглядит следующим образом:

ВСТАВЬТЕ В ЦЕННОСТИ журнала
(100896, «Tansaction on Benjamin Hampshair a / c», «26-август-08» 932656, 933456, 1000);

Оператор SQL для завершения транзакции выглядит следующим образом:

КОМИТЕТНАЯ РАБОТА;

Транзакция базы данных должна быть атомарной, последовательной, изолированной и долговечной. Ниже мы обсудили эти четыре пункта.

Атомная: транзакция - это логическая единица работы, которая должна быть либо завершена со всеми изменениями данных, либо ни одна из них не выполнена.

Согласованно: в конце транзакции все данные должны оставаться в согласованном состоянии.

Изолированный: модификации данных, выполняемые транзакцией, должны быть независимыми от другой транзакции. Если это не произойдет, результат транзакции может быть ошибочным.

Долговечный: по завершении транзакции эффекты изменений, выполненных транзакцией, должны быть постоянными в системе.

Часто эти четыре свойства транзакции обозначаются как ACID .

Мы объяснили вышеупомянутые четыре свойства перевода на следующем примере:

Пример перевода средств

  • Транзакция для перевода 1000 долларов со счета X на счет Y:
    1. чтения (X)
    2. X = X –1000
    3. записи (Х)
    4. готовы)
    5. Y = Y + 1000
    6. написать (Y)
  • Требование атомарности - если транзакция завершится неудачей после шага 3 и до шага 6, система должна убедиться, что ее обновления не отражены в базе данных, иначе возникнет несогласованность.
  • Требование согласованности - сумма X и Y не изменяется при выполнении транзакции.
  • если между шагами 3 и 6 другой транзакции будет разрешен доступ к частично обновленной базе данных, он увидит несогласованную базу данных (сумма X + Y будет меньше, чем должна быть).
    1. Изоляция может быть обеспечена тривиально, последовательно выполняя транзакции, то есть одну за другой.
    2. Однако одновременное выполнение нескольких транзакций имеет значительные преимущества, как мы увидим позже.
  • Требование долговечности - после того, как пользователь будет уведомлен о завершении транзакции (т. Е. Произошла передача 1000 долларов США), обновления базы данных транзакцией должны сохраняться, несмотря на сбои.

Начало транзакции

Транзакция начинает инициировать выполнение нескольких операторов SQL. Начало транзакции гарантирует атомарность транзакции. После начала он может либо сделать изменения постоянными, либо откатиться, чтобы отменить изменения, чтобы оставить базу данных без изменений.

Передача транзакции

При фиксации транзакции она закрывается явным образом, и изменения, выполняемые транзакцией, становятся постоянными.

Откат транзакции

При откате транзакции транзакция явно закрывается, и любые изменения, сделанные транзакцией, отбрасываются.

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущая: Процедура SQL - создание, изменение, удаление
Далее: Безопасность базы данных SQL Создание пользователей

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code