一、事务的概述
:
1、什么是事务(transaction)?
事务:
- 一个最小的不可再分的工作单元;
- 通常一个事务对应了一个完整的业务;【例如:银行账户转账业务,改业务就是一个最小的工作单元】
- 而一个完整的业务需要批量的DML(insert,update
,delete)语句共同联合完成; - 事务只和DML语句有关系,或者说DML语句才有事务;
- 以上所描述的 “批量的DML语句” 共有多少条DML语句,与业务逻辑有关系。业务逻辑不同的DML语句的个数不同。
2、关于银行账户转账操作,账户转账是一个完整的业务,最小单元,不可再分。也就是说银行账户转账是一个事务。
t_act 账户表
actno | balance |
---|---|
act-001 | 50000.0 |
act-002 | 10000.0 |
执行转账操作(10000):
update t_act set balance=40000.0 where actno='act-01';
update t_act set balance=20000.0 where actno='act-02';
以上的两条DML语句要求同时成功或者同时失败,最小单元,不可再分。当第一条DML语句执行成功之后,并不能将底层数据库中的第一个账户的数据修改,只是将操作记录了一下,这个记录是在内存中完成同步。若第二条DML语句执行失败,清空所有历史操作。要完成以上的功能必须借助事务。
3、事务的四个特性(ACID):
- 原子性 (A):
*事务是最小的工作单元,不可再分 - 一致性©:
*事务要求所有的DML语句操作的时候,必须保证同时成功或者同时失败 - 隔离性 (I):
*事务A和事务B之间具有隔离 - 持久性(D) :
*是事务的保证,事务终结的标志。【内存中的数据持久到硬盘文件中】
4、关于术语:
- 开启事务:Start Transaction
- 事务结束:End Transaction
- 提交事务:Commit Transaction
- 回滚事务:Rollback Transaction
5、提交和回滚
commit; 提交:成功的结束,将所有的DML语句操作历史记录和底层硬盘we年中的数据来一次同步
rollbac