事务ACID原则

谈到事务一般都是谈ACID这四点

1.原子性(Atomicity)

原子性是指事务是一个不可分割的工作单位,通俗的讲就是事务的操作要么都成功,要么都失败

2.一致性(Consistency)

事务前后数据的必须保持一致

3.隔离性(Isolation)

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离

4.持久性(Durability)

通俗的讲就是事务一旦提交则不可逆,被持久化到数据库中

这里举一个用的最多的例子,也是最经典的例子

 原子性:A有1000元,B有1000元,如果A转给B200元,那么就有两个步骤,第一步A减去200元,第二部B加上200元,事务的原子性表示,这两个步骤要么都成功发生,要么一起失败,不能单独发生其中一个

一致性A有1000元,B有1000元,不管A怎么转钱给B,最后A+B一定要是2000元

持久性

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

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

隔离性针对多个用户同时操作,主要是排除其他事务对本次事务的影响,

A有1000元,B有1000元,A向B转200元,这时C也向B转钱,当C向B转钱时,B还是1000元,不是1200元。

事务的隔离级别

事务隔离有时候会导致一些问题 

脏读:

指一个事务读取了另外一个事务未提交的数据。

不可重复读:

在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

虚读(幻读)

是指在一个事务内读取到了别的事务插入的数据,导致前后读取数量总量不一致。

Guess you like

Origin blog.csdn.net/qq_47499256/article/details/121874278