repeatable read 可重复读取

发布于 2024-10-06 21:15:03 字数 616 浏览 37 评论 0

可对读取到的记录加锁(记录锁),同时保证对读取的范围加锁(范围锁),保证新的满足查询条件的记录不会被插入。SQL 规范下的 repeatable read 允许出现幻读,但 InnoDB 依靠范围锁,在 repeatable read 级别下也可避免幻读。

是 InnoDB 的默认隔离级别。

使用乐观锁(MVCC),使用范围锁。

Java JUC 中的 atomic 包就是乐观锁的一种实现,AtomicInteger 通过 CAS(Compare And Set)操作实现线程安全的自增。

MySQL 隐式和显示锁定

MySQL InnoDB 采用的是两阶段锁定协议(two-phase locking protocol)。在事务执行过程中,随时都可以执行锁定,锁只有在执行 COMMIT 或者 ROLLBACK 的时候才会释放,并且所有的锁是在同一时刻被释放。前面描述的锁定都是隐式锁定,InnoDB 会根据事务隔离级别在需要的时候自动加锁。

另外,InnoDB 也支持通过特定的语句进行显示锁定,这些语句不属于 SQL 规范:

SELECT ... LOCK IN SHARE MODE
SELECT ... FOR UPDATE

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

深海夜未眠

暂无简介

文章
评论
26 人气
更多

推荐作者

陈独秀

文章 0 评论 0

最后的乘客

文章 0 评论 0

Jerry111

文章 0 评论 0

守护在此方

文章 0 评论 0

相思碎

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文