什么是数据库事务?

有人可以提供一个简单的(但不是简单的)交易的解释,适用于计算(即使从维基百科复制)?

交易是您想要视为“一个整体”的工作单位。 它必须要么全部发生,要么根本不发生。

一个典型的例子就是从一个银行账户转账到另一个 为此,您首先要从源帐户中提取金额,然后将其存入目标帐户。 手术必须全部成功。 如果你中途停下来,那钱就会丢失,那很糟糕。

在现代数据库中,交易还可以做其他一些事情,比如确保你不能访问别人写过的数据。 但基本的想法是一样的 – 交易是在那里确保, 无论发生什么事情,你使用的数据将是一个明智的状态 。 他们保证不会出现从一个帐户中提取资金,但不存入另一个帐户的情况。

交易是表示状态变化的一种方式。 交易最好有四个属性,通常称为ACID:

  • primefaces(如果变化是承诺的,它发生在一举,你永远不会看到“一半的变化”)
  • 一致(只有在系统的新状态有效时才会发生更改;任何提交无效更改的尝试都将失败,使系统保持其先前的有效状态)
  • 隔离(没有人看到事务的任何部分,直到它提交)
  • 耐用(一旦发生变化 – 如果系统表示交易已经提交,则客户不需要担心“刷新”系统以使更改“粘住”)

有关更多详细信息,请参阅Wikipedia ACID条目。

虽然这通常应用于数据库,但并不一定如此。 (具体请参见软件事务内存 。)

“一系列数据操作语句必须完全完成或完全失败,使数据库保持一致的状态”

这是一个简单的解释。 您需要从账户A转账100美元到账户B.您可以执行:

accountA -= 100; accountB += 100; 

要么

 accountB += 100; accountA -= 100; 

如果在第一次和第二次手术之间出现问题,你就有一个问题 – 或者100块钱消失了,或者他们已经不知所措了。

事务是一种机制,它允许你标记一组操作并执行它们,使得它们全部执行(提交),或者系统状态就好像它们还没有开始执行(回滚)。

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

将转移100块钱或离开两个帐户在初始状态。

事务是一个或多个被视为一个单元的SQL操作的序列。

具体而言,每个事务似乎都是孤立运行的,而且,如果系统出现故障,则每个事务要么全部执行,要么全部执行。

交易的概念是由两个完全独立的关注所驱动的。 一个与多个客户端的并发访问数据库有关,另一个与具有对系统故障有弹性的系统有关。

事务支持所谓的ACID属性:

  • 答:primefaces性;
  • C:一致性;
  • I:隔离;
  • D:耐久性。

交易属性:

事务具有以下四种标准属性,通常由首字母缩略词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. 

http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID =原始性,一致性,一致性,可用性

当你希望在一个事务中涉及多个事务资源时,你需要使用类似两阶段提交的解决scheme。 XA得到了相当广泛的支持。

我认为“交易处理”的定义会更有用,因为它涵盖了计算机科学中的交易概念。

从维基百科:

在计算机科学中,交易处理是将信息处理分为单独的不可分割的操作,称为交易。 每笔交易必须成功或失败为一个完整的单位; 它不能停留在中间状态。

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

除了上述回应之外,应该指出的是,至less在理论上,交易涉及的资源是什么样的,都没有限制。

大多数情况下,它只是一个数据库或多个不同的数据库,但也可以想象,打印机参与事务,并且可能导致事务失败,例如发生卡纸。

我认为一个事务就是DBMS的一个primefaces操作。

这意味着它不能分开。 是的,在转换中,可能有几个系统执行的指令。 但他们绑在一起完成了一个基本的任务。

例如。 你需要走过一座桥(让我们把它当作一个转换),要做到这一点,你需要100步。 总的来说,这些步骤是不能分开的。 当你做了一半的时候,你只有两个select:继续完成他们,然后回到起始点。 它就像事务的结果:成功(提交)和失败(回滚)

交易是一个不可分割的数据处理单位 – 所有交易必须具有ACID属性:

即:primefaces性,一致性,隔离性和持久性交易全是或者不是中间的(这意味着如果您将您的资金从一个账户转移到另一个账户,一个账户必须损失那么多而另一个账户必须获得该金额,但是如果你从一个账户转移资金,另一个账户仍然是空的,这不是一个交易)

事务可以被定义为被认为是最小处理单元的任务的集合。 每个最小处理单位不能进一步划分。

一个事务的主要操作是读写。

为确保准确性,完整性和数据完整性,所有交易必须包含四个通称为ACID属性的属性。