什么是数据库事务?
有人可以提供一个简单的(但不是简单的)交易的解释,适用于计算(即使从维基百科复制)?
交易是您想要视为“一个整体”的工作单位。 它必须要么全部发生,要么根本不发生。
一个典型的例子就是从一个银行账户转账到另一个 为此,您首先要从源帐户中提取金额,然后将其存入目标帐户。 手术必须全部成功。 如果你中途停下来,那钱就会丢失,那很糟糕。
在现代数据库中,交易还可以做其他一些事情,比如确保你不能访问别人写过的数据。 但基本的想法是一样的 – 交易是在那里确保, 无论发生什么事情,你使用的数据将是一个明智的状态 。 他们保证不会出现从一个帐户中提取资金,但不存入另一个帐户的情况。
交易是表示状态变化的一种方式。 交易最好有四个属性,通常称为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属性的属性。
- 在MS SQL Server Management Studio中处理事务的最佳方式
- 本地方法调用中的EJB事务
- 使用事务或SaveChanges(false)和AcceptAllChanges()?
- entity framework中的SqlException – 不允许新的事务,因为会话中还有其他线程正在运行
- 是否有可能在主要SQL数据库中回滚CREATE TABLE和ALTER TABLE语句?
- 包含TRY CATCH ROLLBACK模式的嵌套存储过程?
- 正确使用SQL Server 2008中的事务
- Atomikos vs JOTM vs Bitronix vs?
- 事务标记为仅回滚:如何find原因