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

Может ли кто-нибудь предоставить простое (но не более простое) объяснение транзакции применительно к вычислениям (даже если скопировано из Википедии)?

Ответ 1

Сделка - это единица работы, которую вы хотите рассматривать как "целое". Он должен либо произойти полностью, либо совсем не.

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

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

Ответ 2

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

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

Посмотрите запись ACID в Википедии для более подробной информации.

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

Ответ 3

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

accountA -= 100;
accountB += 100;

или

accountB += 100;
accountA -= 100;

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

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

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

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

Ответ 4

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

Ответ 5

Транзакция представляет собой последовательность из одной или нескольких операций SQL, которые рассматриваются как единица.

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

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

Транзакция поддерживает так называемые свойства ACID:

  • A: Atomicity;
  • C: согласованность;
  • I: Изоляция;
  • D: Долговечность.

Ответ 6

Свойства транзакций:

Транзакции имеют следующие четыре стандартных свойства, обычно называемые акронимом ACID:

Atomicity: ensures that all operations within the work unit are completed 
          successfully; otherwise, the transaction is aborted at the point of 
          failure, and previous operations are rolled back to their former state.

Consistency: ensures that the database properly changes states upon a successfully 
          committed transaction.

Isolation: enables transactions to operate independently of and transparent to 
          each other.

Durability: ensures that the result or effect of a committed transaction persists 
          in case of a system failure.

Управление транзакциями:

Существуют следующие команды, используемые для управления транзакциями:

COMMIT: to save the changes.

ROLLBACK: to rollback the changes.

SAVEPOINT: creates points within groups of transactions in which to ROLLBACK

SET TRANSACTION: Places a name on a transaction.

Ответ 7

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

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

Ответ 8

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

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

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

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

Ответ 9

В дополнение к вышеприведенным ответам следует отметить, что, по крайней мере теоретически, нет никаких ограничений относительно того, какие ресурсы задействованы в транзакции.

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

Ответ 10

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

Основная операция транзакции - чтение и запись.

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

Ответ 11

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

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

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

Ответ 12

Транзакция является неделимой единицей обработки данных -Все транзакции должны иметь свойства ACID:

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