MySQL事务
1.事务原则:ACID原则 原子性,一致性,隔离性,持久性
原子性(Atomicity)
要么成功,要么失败
一致性(Consistency)
事务前后的数据完整性要保持一直,(如A有800元,B有200元,两人之和必须为1000)
隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务直接要相互隔离
持久性(Durability)
事务一旦提交则不可逆,被持久化到数据库中
2.隔离所导致的一些问题
脏读:
指一个事务读取了另外一个事务未提交的数据
如图:A给B转账200,B变为了400,但是C读取了B原来的数据(200),导致结果B的钱为300,这就是脏读
不可重复读:
在一个事务内读取表中的某一行数据,多次读取结果不同(这个不一定是错误,只是某些场合不对,比如第二次读取某用户的余额正好有人充值,导致第二次读取的数据不一致)
虚读(幻读)
是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致
虚读(幻读)
是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致