前言:
isolation 隔离性:
durable 持久性:
脏读、幻读和不可重复读的概念
脏读:
所谓脏读是指一个事务中访问到了另外一个事务未提交的数据,如下图:
如果会话 2 更新 age 为 10,但是在 commit 之前,会话 1 希望得到 age,那么会获得的值就是更新前的值。或者如果会话 2 更新了值但是执行了 rollback,而会话 1 拿到的仍是 10。这就是脏读。
不可重复读:
一个事务查询同一条记录2次,得到的结果不一致:
由于在读取中间变更了数据,所以会话 1 事务查询期间的得到的结果就不一样了。
幻读:
一个事务查询2次,得到的记录条数不一致:
幻读是不可重复读的一种特殊场景。
mysql 数据隔离级别
mysql 里有四个隔离级别:
不同事务隔离级别有不同的效果:
在 innodb 中,默认为 repeatable 级别,innodb 中使用一种被称为 next-key locking 的策略来避免幻读(phantom)现象的产生。
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。
如对本文有疑问, 点击进行留言回复!!
服务器Centos部署MySql并连接Navicat过程详解
网友评论