-
定义
事务(Transaction)是一系列的数据库操作,简而言之就是就是一个操作序列。可以是一条SQL语句,一组SQL语句或整个程序;一个应用程序通常包含多个事务。
BEGIN TRANSACTION 事务的开始。
END TRANSACTION 事务的结束
COMMIT 事务提交。事务成功执行,即通知事务管理器该事务所有操作现在可以被提交或者永久保存。
ROLLBACK 事务回滚。事务执行失败,即通知事务管理器该事务出故障了,数据库可能处于不一致的状态,该事务所有更新操作必须撤销或者回滚。
举例:账户A转入账户B 金额X元
伪代码:
BEGIN TRANSACTION
read(A);
A=A-x;
IF (A<0) then
Print(“余额不足”)
ROLLBACK;
ELSE
write(A);
read(B);
B=B+x
write(A);
COMMIT;
ENDIF;
END TRANSACTION
-
ACID特性
1.原子性atomicity
事务中包括的操作要么都做,要么都不做。Either all or none。
2.一致性consistency
一个事务独立执行的结果,将保持数据一致性。如:增减平衡
3. 隔离性isolation
一个事务的执行不能被其他事务干扰。
4. 持久性durability
持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就必须是永久性的。
-
状态
1. 活动状态
事务的初始状态。 正在执行事务就处于该状态下
2. 部分提交
操作序列的最后一条语句已经执行,此时处于部分提交状态。虽然事务已经完全执行,但是实际输出还可能驻留在内存中,一旦出现硬件问题,事务不得不终止,因此,此状态为部分提交。
3. 失败的状态
由于某些因素,事务不能正常继续,则该事务处于失败状态。
4. 中止
处于失败状态的事务,将中止或回滚事务以使数据库进入前一致状态。
中止事务后,数据库恢复模块将选择以下两个操作之一:
- 重新开始事务:事务中止由软硬件引起。
- 杀死事务:事务中止由事务内部逻辑错误/输入错误等引起。
5. 提交
如果事务成功执行所有操作,则称该事务处于已提交状态。 在此状态下,所有效果现在都永久保存在数据库系统中。
相关文章
暂无评论...