前言

事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性。


原子性

一个事务执行,要么全部成功,要么全部失败回滚,不能只有部分成功,这就是事务的原子性


一致性

事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。

如果数据库系统在运行过程中发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所作的修改有一部分已写入物理数据库,这是数据库就处于一种不正确的状态,也就是不一致的状态


持久性

表示事务结束后的数据不随着外界原因导致数据丢失

操作前A:800,B:200
操作后A:600,B:400
如果在操作前(事务还没有提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为
A:800,B:200
如果在操作后(事务已经提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为
A:600,B:400


隔离性

事务的隔离性是指在并发环境中,并发的事务时相互隔离的,一个事务的执行不能不被其他事务干扰。不同的事务并发操作相同的数据时,每个事务都有各自完成的数据空间,即一个事务内部的操作及使用的数据对其他并发事务时隔离的,并发执行的各个事务之间不能相互干扰。

标准SQL规范中,事务隔离级别有下面四种

严格级别 1最低,4最高

name 级别 描述
Read uncommitted 1 读未提交,该隔离级别允许脏读取,其隔离级别最低;
Read committed 2 授权读取也称为已提交读,授权读取只允许获取已经提交的数据。
Repeatable read 3 可重复读,就是保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻是一致的,因此该事务级别禁止不可重复读取和脏读取,但是有可能出现幻影数据。
Serializable 4 串行化,是最严格的事务隔离级别,它要求所有事务被串行执行,即事务只能一个接一个的进行处理,不能并发执行。