事务的基本特性和隔离级别
事务基本特性ACID分别是:
原⼦性
指的是⼀个事务中的操作要么全部成功,要么全部失败。⼀致性
指的是数据库总是从⼀个⼀致性的状态转换到另外⼀个⼀致性的状态。隔离性
指的是⼀个事务的修改在最终提交前,对其他事务是不可⻅的。持久性
指的是⼀旦事务提交,所做的修改就会永久保存到数据库中。
隔离性有4个隔离级别
● read uncommit
读未提交,可能会读到其他事务未提交的数据,也叫做脏读。
● read commit 读已提交
,两次读取结果不⼀致,叫做不可重复读。
● repeatable read 可重复复读
,这是mysql的默认级别,就是每次读取结果都⼀样,但是有可能产
⽣幻读。
● serializable 串⾏
,⼀般是不会使⽤的,他会给每⼀⾏读取的数据加锁,会导致⼤量超时和锁竞争
的问题。
脏读(Drity Read):某个事务已更新⼀份数据,另⼀个事务在此时读取了同⼀份数据,由于某些原因,前⼀个RollBack了操作,则后⼀个事务所读取的数据就会是不正确的。
不可重复读(Non-repeatable read):在⼀个事务的两次查询之中数据不⼀致,这可能是两次查询过程中间插⼊了⼀个事务更新的原有的数据。
幻读(Phantom Read):在⼀个事务的两次查询中数据笔数不⼀致,例如有⼀个事务查询了⼏列(Row)数据,⽽另⼀个事务却在此时插⼊了新的⼏列数据,先前的事务在接下来的查询中,就会发现有⼏列数据是它先前所没有的