快照读的弊端

  本文参考 https://blog.csdn.net/bohu83/article/details/105336004

  Mysql的读取分为两种,快照读和当前读。快照读就是解决幻读的关键,但是快照读却有一个致命的问题,就是如果undolog链太长了,会导致一次快照读耗时非常长

  示例如下

  快照读的弊端

  你看到了,session A先用start transaction with consistent snapshot命令启动了一个事务,之后session B才开始执行update 语句。

session B执行完100万次update语句后,id=1这一行处于什么状态呢?

  快照读的弊端

  session B更新完100万次,生成了100万个回滚日志(undo log)。

  带lock in share mode的SQL语句,是当前读,因此会直接读到1000001这个结果,所以速度很快;而select * from t where id=1这个语句,是一致性读,因此需要从1000001开始,依次执行undo log,执行了100万次以后,才将1这个结果返回。

  

上一篇:【ybt金牌导航6-2-1】【luogu P3201】梦幻布丁 / 启发式合并例题


下一篇:[CSP-S模拟测试]:stone(结论+桶+前缀和+差分)