当前位置:Gxlcms > 数据库问题 > MySQL隔离等级

MySQL隔离等级

时间:2021-07-01 10:21:17 帮助过:3人阅读

其次,隔离等级是按照不隔离(脏读)=>不可重复读=>可重复读但存在幻读=>完全串行化(禁用并发,解决幻读),逐步加强隔离的程度的

另:

网上对幻读的理解存在很多错误的地方。如:

有些文章引用《高性能MySQL》中所讲,MySQL的InnoDB引擎通过MVCC(多版本并发控制)在repeatable read级就已解决了幻读的问题。实际是错误的,MVCC采用类似乐观锁的机制从原理上就无法解决幻读,同时从上面的例子中也可以看出,幻读问题在repeatable read级并未解决

有些文章采用了类似这样的描述:当事务(A)读取了一定范围的数据后,另一个事务(B)在这个范围中插入一些数据,当原事务(A)在这个范围内更新数据的时候,就会“惊奇”地发现这些数据,如同“幻影”一般。这种描述很模糊,什么叫“惊奇”,什么叫“幻影”?结合前面所举的例子可以看出,事务A之所以会“惊奇”地感知到这些数据,是因为它SELECT不到这些由事务B更新的数据,但这些数据会影响到A的操作,如同“幻影”一样,看不到它,但它却已经存在

最后,总结一下便于记忆,对于事务而言:

“读未提交”是指不管其它事务是否提交都能读到它们的数据

“读已提交”是指只有当其它事务提交之后才能读到它们的数据

“可重复读”是指只有当自己提交了之后才能读到其它事务提交的数据

“序列化”是指事务逐个执行,当前事务提交之前,其它都被挂起

MySQL隔离等级

标签:

人气教程排行