acid的事务特性
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
原子性就是要么成功要么失败。
一致性就是比如存款总额不变。从一个一致性状态转移到另一个一致性状态。
事务之间不可以相互影响。事务在提交之前是不被其他事务可见的。
事务完成后持久存储在磁盘的数据库中。
脏读:读取过期失效的数据。
不可重复读:一个事务范围内两个相同的查询却返回了不同数据。
幻读:解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。但是,如果另一个事务同时提交了新数据,本事务再更新时,就会“惊奇的”发现了这些新数据,貌似之前读到的数据是“鬼影”一样的幻觉。
四种隔离级别
未提交读:它充许令外一个事务可以看到这个事务未提交的数据。会出现三个问题:脏读,不可重复读,幻读。
提交读即不可重复读?保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。 解决了脏读。大部分数据库默认的级别。
可重复读 它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。解决了不可重复读。mysql默认的级别。
可串行化(序列化):它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。解决了幻读。代价最高,最可靠。读操作会隐式获取共享锁,可以保证不同事务间的互斥。
七种传播行为。。。。