定义
DBMS 提供了事务(Transactions)支持。事务是作为 DBMS 中的逻辑单元分组执行的一系列数据库操作。与在DBMS之外执行程序(例如,C程序)在许多方面都不同!

数据库应用程序通常通过事务而不是单个操作访问数据库。例如,大型数据库和数百个并发用户:银行、超市收银台、机票预订、在线购买等。
之所以使用事务是因为它们可以在以下情况下实施数据完整性:多个用户可以同时修改和共享数据;事务、系统和媒体故障可能不时发生。
- 从高级语言的角度(如 SQL)
- 插入(INSERT)、选择(SELECT)、更新(UPDATE)、删除(DELETE)
- 开始(BEGIN)、提交(COMMIT)、中止(ABORT)/ 回滚(ROLLBACK)等;
BEGIN TRANSACTION
SELECT balance FROM Account WHERE name = `Steve';
UPDATE Account
SET balance = balance-500 WHERE name=`Steve';
SELECT balance FROM Account WHERE name = `Bob';
UPDATE Account
SET balance = balance+500 WHERE name = `Bob';
COMMIT
- 内部进程级别:操作对象为数据表、行、单元或者内存页。
- 读(read)、写(write)
- 开始(begin)、提交(commit)
- 中止(abort):表示事务未成功结束,撤消事务的所有操作
| 步骤 | Transactions |
| 1 | read(A) |
| 2 | write(A) (A := A - 500) |
| 3 | read(B) |
| 4 | write(B) (B:= B + 500) |
| 5 | commit |
其中,A 是 Steve 的账户余额;B 是 Bob 的账户余额。
ACID 属性
DBMS 确保了事务的以下属性:
- 原子性(Atomicity)
- 每个事务的执行都是原子性的,即要么所有的操作都完成了(ALL),要么根本没有完成(NONE)。
- 如果一个事务因为某些原因而不能完成,那么 DBMS 必须消除部分事务的影响,以确保原子性。
- 一致性(Consistency)
- 数据库的状态在每个事务之前和之后是一致的。
- 中间状态可能是不一致的。
- 隔离(Isolation)
- 每个事务的执行结果应该不受其他并发执行事务的影响。
- 其他事务不会看到目前事务下所有对象的信息,直至该事务完成。
- 耐用性(Durability)
- 一旦事务成功完成,它的效果应该会保存在数据库中。
- 一旦提交,事务就不能恢复为 abort,这种改变是持久的。
需要注意的是,这些属性不是相互独立的,但原子性是中心属性。</

最低0.47元/天 解锁文章
1843

被折叠的 条评论
为什么被折叠?



