mysql的innodb存储引擎事务隔离级别

innodb存储引擎支持数据库事务,事务有四大特性ACID:
原子性 Atomicity
一致性 Consistency
持久性 Durability
隔离性 isolation

mysql事务隔离表
  隔离级别 脏读 不可重复读 幻读
1 Read uncommitted    未提交读 可能 可能 可能
2 Read committed    已提交读 —— 可能 可能
3 Repeatable read   可重复读 —— ——

——
在mysql中已基本解决幻读问题。

幻读是怎么解决的?在快照下面,是用MVCC解决的,在LBCC(Locked Base Concurrency Control)锁定读或当前读的情况下,是用间隙锁gap锁来解决的。

4 Serializable      可序列化 —— —— ——

事务隔离级别:
1) Read uncommitted 未提交读。脏读。事务2读到事务1已更改但未提交的数据
2) Read committed 读已提交。可重复读。事务2要等事务1提交后才能读取数据。 同一个线程在一个事务过程中相同查询SQL,前后返回了其他线程事务提交前和提交后两种不同的值
3) Repeatable read 可重复读。

4) Serializable 可序列化。 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。

备注:在mysql中,不可重复读 和 幻读 在 “Read uncommitted” 和 “Read committed” 两种隔离级别中都可能出现。

【不可重复读】

当事务内相同的记录被检索两次,且两次得到的结果不同时,此现象为不可重复读。

【Phantom reading 幻读】

幻读是读取到了之前没有读取到的记录。幻读对应的问题是insert操作,而不是update操作。 对于delete操作,SQL92标准里视为幻读,但在mysql官方认为它不是幻读,认为是发生了被删除记录的不可重复读。 

show variables like 'transaction_isolation';     执行该SQL可获得mysql的默认事务级别: REPEATABLE-READ

参考 《理解事务的4种隔离级别

end.

支付宝扫一扫,为女程序员打赏!
作者:梦幻朵颜
版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/zhuwenjoyce/p/14854779.html