数据库的事务

2年前 (2022) 程序员胖胖胖虎阿
255 0 0

  • 定义

事务(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. 提交

如果事务成功执行所有操作,则称该事务处于已提交状态。 在此状态下,所有效果现在都永久保存在数据库系统中。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月11日 下午3:16。
转载请注明:数据库的事务 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...