MySQL是怎么解决幻读的问题的?
1 个回答
二八佳人体似酥,腰间仗剑斩凡夫。小菜鸟幻读就是事务执行过程中,在查询一个范围的数据时,有新的数据插入到这个范围,导致两次查询的数据不一致。因为读分为快照读和实时读, **快照读** 我们普通的SELECT语句都是普通读,也就是读取的数据都是事务开始时那个状态的数据,普通读的幻读问题主要是通过MVCC来解决的,具体可以看上面的MVCC中的查询操作。 **实时读** SELECT *** FOR UPDATE 在查询时会先申请X锁 SELECT *** IN SHARE MODE 在查询时会先申请S锁 就是实时读,就是读取的是实时的数据,而不快照数据,读的时候会加Next-Key Lock锁住当前的记录,以及左右两个区间的间隙,这样在读的时候就不能往我们的查询范围插入数据了。编辑于 2022-02-12 20:56 •IP属地 辽宁举报评论收藏
公众号进入网站体验更佳

