Mysql中的RR 隔离级别,到底有没有解决幻读问题

编程入门 行业动态 更新时间:2024-10-25 08:28:13

Mysql中的RR 隔离级别,<a href=https://www.elefans.com/category/jswz/34/1721387.html style=到底有没有解决幻读问题"/>

Mysql中的RR 隔离级别,到底有没有解决幻读问题

Mysql 中的 RR 事务隔离级别,在特定的情况下会出现幻读的问题。所谓的幻读,表示在同一个事务中的两次相同条件的查询得到的数据条数不一样。

在 RR 级别下,什么情况下会出现幻读

这样一种情况,在事务 1 里面通过 update 语句触发当前读的情况下,就会导致在该事务中的前后两次查询的数据行数不一致,从而出现幻读的现象。

导致幻读的根本原因是:在大多数情况下,快照读是通过读取已经存在的快照来获取数据的,而不会触发当前读。有一种情况可以导致在 RR 隔离级别下触发当前读绕过快照读,那就是使用了锁定行的语句,如 SELECT ... FOR UPDATE 或 SELECT ... LOCK IN SHARE MODE。所以update 触发的当前读操作,绕过了快照读,从而导致 MVCC机制在当前场景下失效。最终读取到了事务 2中已经提交的数据。

预防这一特殊情况

为了避免出现这类的情况,我们可以通过 for update 语句加锁。

更多推荐

Mysql中的RR 隔离级别,到底有没有解决幻读问题

本文发布于:2023-12-06 03:54:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1666359.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:到底有没有   级别   Mysql   RR

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!