事务
四个特性(ACID) 开发时三个特殊情况
一、原子性(初心) 一、脏读
二、一致性 二、不可重复读
三、持久性 三、幻读
四、隔离性
一、原子性
事务要么全部执行完毕,要么全不执行。
当服务器在执行时,如果突然断电,那么就有可能出现服务器内数据改变,而客户端没有发生改变。比如转账在十几年前转账过后都会要求去看一下钱到账没有,如果没到账就可以去银行操作一下。
二、一致性要
如果钱没到账那么服务器减少的余额就会给他加回去,确保了客户端与服务器的数据保持一致。
三、持久性 改变的数据
事务一但提交便会一直保存下来。避免在服务器宕机后数据的丢失,在服务器重启后便能回滚。
四、隔离性
在多个事务并发进行时,有时会发生①脏读②不可重复读③幻读等问题此时就要通过加锁的方或对事务进行隔离避免事务间互相影响
三种现象
①脏读 在事务进行读数据操作时,如果有另一个事务对数据进行了修改,此时若读数据操仍在进行,此时的数据是无效的也叫做脏数据
②不可重复读 在事务进行多次查询同一数据时由于被查询数据的改变导致查询出的结果不同,(重点在修改)
③幻读 在事务对数据进行修改时,另一个事务对数据进行增加,或删除导致事务1语以为修改过了或没修改过。
②,
悲观锁:把所有事务都上锁一个一个进行
乐观全员:全都万上锁 一起进行
四种隔离级别
1, read uncommitted(读未提交)
一个事务未提交时可被“看到”(操作)
2、read committed(读已提交)
一个事务已提交后才可被“看到”
3,repeatable read (可重复读)
一个事务执行时看到的数据总是和最初一样,且已提交后的事4,serializable(半行化) 被“看
读加读锁,写加写锁。事务冲突时依次进行