有人能够提供一个简单明了但不过于简化的关于计算机事务的解释吗?
有人能够提供一个简单明了但不过于简化的关于计算机事务的解释吗?
一个事务是您希望将其视为“整体”的工作单元。它必须完整发生或完全不发生。
一个经典的例子是从一个银行账户转账到另一个账户。要完成这个操作,您首先必须从源账户中提取相应金额,并将其存入目标账户中。该操作必须完全成功。如果在一半停止,则资金将丢失,这是非常糟糕的。
在现代数据库中,事务还会执行其他一些操作,例如确保您无法访问其他人已经写入一半的数据。但基本思想是相同的 - 事务存在的目的是确保无论发生什么情况,您所处理的数据都处于合理的状态。它们保证不会出现这样的情况,即从一个账户中提取了资金,但没有存入另一个账户中。
这里有一个简单的解释。您需要将100元从A账户转移到B账户。您可以选择以下两种方式:
accountA -= 100;
accountB += 100;
或者
accountB += 100;
accountA -= 100;
如果在一对操作的第一次和第二次之间出现问题,那么你就会有麻烦——要么100美元消失了,要么它们突然冒出来了。beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
将要么转移100美元,要么使两个账户保持初始状态。
“一系列数据操作语句必须完全执行或完全失败,以确保数据库处于一致状态。”
“事务”是指一组或多组SQL操作被视作一个单元来执行。
具体而言,每个事务似乎都在隔离状态中运行,并且如果系统发生故障,则每个事务要么全部执行,要么全部不执行。
事务的概念源于两个完全独立的问题。一个问题涉及到多个客户端并发访问数据库,另一个问题涉及到具有系统故障恢复能力的系统。
事务支持所谓的ACID属性:
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
事务 - 只是一组逻辑上组合在一起的操作,您希望它们全部被提交或回滚。