MYSQL事件隔离级别以及复读,幻读,脏读的理解 - Go语言中文社区

MYSQL事件隔离级别以及复读,幻读,脏读的理解


一.mysql事件隔离级别

1未提交读(READUNCOMMITTED)

另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据(脏读)( 隔离级别最低,并发性能高 )

2..提交读(READCOMMITTED)

本事务读取到的是最新的数据(其他事务提交后的)。问题是,在同一个事务里,前后两次相同的SELECT会读到不同的结果(不重复读)。会出现不可重复读、幻读问题(锁定正在读取的行)

3.可重复读(REPEATABLEREAD)

在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象(稍后解释)。会出幻读(锁定所读取的所有行)

4.串行化(SERIALIZABLE)

读操作会隐式获取共享锁,可以保证不同事务间的互斥(锁表)

二.脏读、不可重复读、幻读、复读

1.脏读

当前事务读到的数据是别的事务想要修改成为的但是没有修改成功的数据

2.不可重复读

当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改成功的数据,导致两次读取到的数据不匹配,也就照应了不可重复读的语义

3.幻读

当前事务读第一次取到的数据比后来读取到数据条目少或者增加,针对数据的删与增

4.复读

当前事务先进行了一次数据读取,然后再次读取到的数据是别的事务修改之前的数据,两次数据相同

版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/pythonywy/p/11671581.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2019-10-27 21:26:47
  • 阅读 ( 1289 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢