头条一面 mysql面试问题

前天有个面试题没答出来
innodb rr级别使用gap lock是不是已经解决了幻读问题 为什么还要串行化呢
有什么场景没覆盖到吗
求教各位大佬
#字节跳动##MySQL#
全部评论
我觉得gap lock是不锁当前的记录,只锁它附近的记录。repeatable read只保证记录不论事务a,事务b还是事务c读取,内容都是一致的,但是如果事务d删了这条记录,那么其他事务再读取的时候,这条记录就不存在了,这就产生了幻读的问题?
1 回复
分享
发布于 2019-12-08 21:53
串行化是为了解决幻读的吗?我之前看书说幻读在rr级别下已经解决了阿。。
点赞 回复
分享
发布于 2019-12-08 23:22
博乐游戏
校招火热招聘中
官网直投
通过MVCC和间隙锁
点赞 回复
分享
发布于 2019-12-08 23:22
我觉得,你可能方向想错了。可重复读隔离级别下通过mvcc和next key lock实现了事务安全。但这题不是问你可重复读是否能实现事务安全,而是各个隔离级别的场景。读未提交和读已提交,可重复读,可串行化都有自己的使用场景啊。例如可串行化就是只能事务一个个的来,不能并行,例如分布式事务多采用可串行化。类似的题目延伸,volatile关键不就是保证可见性吗?这就和可重复读冲突了吧,可重复读的使用场景是啥?
点赞 回复
分享
发布于 2019-12-08 23:37
读解决了,写没解决
点赞 回复
分享
发布于 2019-12-08 23:54
我想的是先有了串行化解决了幻读的问题,但串行化的效率较低,因此引入的gap锁相比而言具有较好的优势。
点赞 回复
分享
发布于 2021-04-18 21:12

相关推荐

3 17 评论
分享
牛客网
牛客企业服务