mvcc read view
快照读:在RR隔离级别下:快照读有可能读到数据的历史版本,也有可能读到数据的当前版本。所以快照读无需用锁也不会发生幻读的情况。
当前读:select…lock in share mode,select…for update
当前读:update,delete,insert
读取的是记录的最新版本,所以所以就需要通过加锁(行锁 间隙锁 表锁)的方式,使得被当前读读过的数据不能被新增修改或者删除,换句话说再来一次当前读要返回相同的数据。
所以面试问题:mysql如何实现RR的?答案:MVCC + 行锁 + 间隙锁。快照读:mvcc,当前读:行锁 + 间隙锁。
转载:
第一篇似乎有点小问题:针对快照读,rr下每次读取使用的是同一个rv,所以实现了重复度,rc下每次读取使用新的rv,所以实现了读提交
而针对当前度,使用了行锁 + 间隙锁 = next-key lock实现重复度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY