Vla*_*dim 95 database theory concurrency failover transactions
有人可以提供一个简单(但不简单)的交易解释,应用于计算(即使从维基百科复制)?
Vil*_*lx- 216
交易是您想要视为"整体"的工作单元.它必须完全发生或根本不发生.
一个典型的例子就是将资金从一个银行账户转移到另一个 要做到这一点,您首先要从源帐户中提取金额,然后将其存入目标帐户.该行动必须全面取得成功.如果你中途停止,钱将会丢失,这是非常糟糕的.
在现代数据库中,事务还可以执行其他一些操作 - 例如确保您无法访问其他人中途写入的数据.但基本思路是一样的 - 交易是确保的,无论发生什么,你使用的数据都将处于合理的状态.他们保证不会出现从一个账户提取资金但不存入另一个账户的情况.
sha*_*oth 36
这是一个简单的解释.您需要将100美元从帐户A转移到帐户B.您可以执行以下操作:
accountA -= 100;
accountB += 100;
Run Code Online (Sandbox Code Playgroud)
要么
accountB += 100;
accountA -= 100;
Run Code Online (Sandbox Code Playgroud)
如果对中的第一次和第二次操作之间出现问题,你就会遇到问题 - 100块钱已经消失,或者它们突然出现了.
事务是一种机制,允许您标记一组操作并以这样的方式执行它们:它们都执行(提交),或者系统状态就好像它们根本没有开始执行(回滚)一样.
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
Run Code Online (Sandbox Code Playgroud)
将转移100美元或将两个帐户保持在初始状态.
Rad*_*Rad 31
"一系列数据操作语句必须完全完成或完全失败,使数据库保持一致状态"
小智 10
事务是一个或多个SQL操作的序列,它们被视为一个单元.
具体来说,每个事务似乎都是孤立运行的,而且,如果系统出现故障,每个事务要么全部执行,要么全部执行.
交易的概念是由两个完全独立的问题所驱动的.一个与多个客户端对数据库的并发访问有关,另一个与系统对系统故障具有弹性有关.
事务支持所谓的ACID属性:
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID =原子性、一致性、隔离性、持久性
当您希望在单个事务中涉及多个事务资源时,您将需要使用类似两阶段提交解决方案的解决方案。XA得到了相当广泛的支持。