有人可以提供一个简单(但不简单)的交易解释,应用于计算(即使从维基百科复制)?
答案 0 :(得分:197)
交易是您想要视为“整体”的工作单元。它必须完全发生或根本不发生。
一个典型的例子是将钱从一个银行账户转移到另一个银行账户。要做到这一点,您首先要从源帐户中提取金额,然后将其存入目标帐户。该行动必须全面取得成功。如果你中途停止,钱将会丢失,这是非常糟糕的。
在现代数据库中,事务还会执行其他一些操作 - 例如确保您无法访问其他人中途写入的数据。但基本的想法是一样的 - 交易是确保的,无论发生什么,你使用的数据都将处于合理的状态。他们保证不会出现从一个账户提取资金但不存入另一个账户的情况。
答案 1 :(得分:66)
交易是表示状态变化的一种方式。理想情况下,事务有四个属性,通常称为ACID:
有关详细信息,请参阅Wikipedia ACID条目。
虽然这通常应用于数据库,但并非必须如此。 (特别是,请参阅Software Transactional Memory。)
答案 2 :(得分:34)
这是一个简单的解释。您需要将100美元从帐户A转移到帐户B.您可以执行以下操作:
accountA -= 100;
accountB += 100;
或
accountB += 100;
accountA -= 100;
如果对中的第一次和第二次操作之间出现问题,你就会遇到问题 - 100块钱已经消失,或者它们突然出现了。
事务是一种机制,允许您标记一组操作并以这样的方式执行它们:它们全部执行(提交),或者系统状态就好像它们根本没有开始执行一样(回滚)。
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
将转移100美元或将两个帐户保留在初始状态。
答案 3 :(得分:31)
“必须完全完成或完全失败的一系列数据操作语句,使数据库保持一致状态”
答案 4 :(得分:10)
事务是一个或多个SQL操作的序列,它们被视为一个单元。
具体来说,每个事务似乎都是孤立运行的,而且,如果系统出现故障,每个事务都要么全部执行,要么不是全部执行。
交易的概念是由两个完全独立的问题所驱动的。 一个与多个客户端对数据库的并发访问有关,另一个与此有关 拥有一个能够抵御系统故障的系统。
交易支持所谓的ACID属性:
答案 5 :(得分:3)
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = A tomicity, C onsistency, I solation, D urability
如果您希望在单个事务中涉及多个事务资源,则需要使用类似two-phase commit解决方案的内容。 XA受到广泛支持。
答案 6 :(得分:1)
我建议“交易处理”的定义会更有用,因为它将交易作为计算机科学的一个概念。
来自维基百科:
在计算机科学中,事务处理是信息处理,它被分成单独的,不可分割的操作,称为事务。每笔交易必须作为一个完整的单位成功或失败;它不能保持中间状态。
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
答案 7 :(得分:1)
除了上述回复之外,应该注意的是,至少在理论上,对交易中涉及的资源类型没有任何限制。
大多数情况下,它只是一个数据库或多个不同的数据库,但也可以想象打印机参与交易,并且可能导致该交易失败,例如在卡纸的情况下。
答案 8 :(得分:1)
可以将事务定义为被视为最小处理单元的任务集合。每个最小处理单元不能进一步划分。
事务的主要操作是读写。
所有交易必须包含四个通常称为ACID属性的属性,以确保准确性,完整性和数据完整性。
答案 9 :(得分:1)
根据 Database Fundamentals 一书(Sharma, et al., 2010, p. 162),事务或工作单元是一组数据库操作,所有这些操作都应该成功执行才能调用事务成功。
比如银行需要从A账户向B账户转账1000美元,那么在转账成功之前需要进行以下步骤。
参考文献:
Sharma, N., Perniu, L., Chong, R. F., Iyer, A., Nandan, C., Mitea, A. C., Nonvinkere, M. & Danubianu, M. (2010)。数据库基础知识。
答案 10 :(得分:0)
我认为事务是DBMS方面的原子操作。
这意味着它不能分开。是的,在转换中,系统可能有几条指令要执行。但他们被绑在一起完成一项基本任务。
例如,。你需要走过一座桥(让我们将其视为一个转换),并且要做到这一点,比方说,你需要100个步骤。总的来说,这些步骤不能分开。当你完成其中一半时,你只有两个选择:继续完成所有选择,然后回到起点。它就像事务的结果:成功(已提交)和失败(回滚)
答案 11 :(得分:0)
交易是一个不可分割的数据处理单位 - 所有交易必须具有ACID属性:
即:原子性,一致性,隔离性和持久性 交易是全部或全无,但不是中间人(这意味着如果您将资金从一个账户转移到另一个账户,一个账户必须损失那么多而另一个账户必须获得该金额,但如果您从一个账户和另一个账户转账仍然是空的,不是交易)
答案 12 :(得分:0)
事务 - 只是一组逻辑组成的操作,您希望它们一起提交或回滚。