Что такое транзакция базы данных?

 $(document).ready(function () {
     $(document).keyup(function (e) {
         if (e.keyCode == 81 && e.ctrlKey) { //CTRL+Q
             alert("CTRL+Q");
         } else if (e.keyCode == 27) { //ESCAPE
             alert("escape");
         } else if (e.keyCode == 67 && e.altKey) { // ALT+C
           alert("ALT+C");
        }     
    });
});

коды клавиш

95
задан 6 revs, 4 users 50% 5 August 2017 в 15:55
поделиться

8 ответов

Транзакция - это единица работы, которую вы хотите рассматривать как «единое целое». Это должно происходить либо полностью, либо не происходить вообще.

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

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

216
ответ дан 24 November 2019 в 05:42
поделиться

Вот простое объяснение. Вам необходимо перевести 100 долларов со счета A на счет B. Вы можете сделать:

accountA -= 100;
accountB += 100;

или

accountB += 100;
accountA -= 100;

Если что-то пойдет не так между первой и второй операциями в паре, у вас возникнет проблема - либо 100 долларов исчезли, либо либо они появились из ниоткуда.

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

beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;

либо переведет 100 долларов, либо оставит оба аккаунта в исходном состоянии.

36
ответ дан 24 November 2019 в 05:42
поделиться

Транзакция - это способ представления изменения состояния. В идеале транзакции имеют четыре свойства, обычно известные как ACID:

  • Атомарные (если изменение зафиксировано, это происходит одним махом; вы никогда не увидите «половину изменения»)
  • Согласованность (изменение может произойти только в том случае, если новое состояние системы будет действительным; любая попытка зафиксировать недопустимое изменение потерпит неудачу, система останется в предыдущем допустимом состоянии)
  • Изолированный (никто другой не видит никакой части транзакции, пока она не будет зафиксирована)
  • Надежный (после того, как изменение произошло - если система сообщает, что транзакция была зафиксирована, клиенту не нужно беспокоиться о «промывке» системы, чтобы изменение «закрепилось»)

См. Википедию Запись ACID для получения дополнительных сведений.

Хотя это обычно применяется к базам данных, это не должно быть. (В частности, см. Программная транзакционная память .)

70
ответ дан 24 November 2019 в 05:42
поделиться

«Серия операторов манипулирования данными, которые должны либо полностью завершиться, либо полностью выйти из строя, оставляя базу данных в согласованном состоянии»

31
ответ дан 24 November 2019 в 05:42
поделиться

http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = A tomicity, C onsistency, I solation, D uability

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

4
ответ дан 24 November 2019 в 05:42
поделиться

Я бы предположил, что определение «обработки транзакций» было бы более полезным, поскольку оно охватывает транзакции как концепцию в информатике.

Из википедии:

В информатике, Обработка транзакций - это обработка информации, которая делится на отдельные неделимые операции, называемые транзакциями. Каждая транзакция должна быть успешной или неудачной как единое целое; он не может оставаться в промежуточном состоянии.

http://en.wikipedia.org/wiki/Transaction_processing#Implementations

1
ответ дан 24 November 2019 в 05:42
поделиться

Я считаю, что транзакция - это элементарное действие в терминах СУБД.

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

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

0
ответ дан 24 November 2019 в 05:42
поделиться

In addition to the above responses, it should be noted that there is, at least in theory, no restriction whatsoever as to what kind of resources are involved in a transaction.

Most of the time, it is just a database, or multiple distinct databases, but it is also conceivable that a printer takes part in a transaction, and can cause that transaction to fail, say in the event of a paper jam.

1
ответ дан 24 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: