其他分享
首页 > 其他分享> > 快照读的弊端

快照读的弊端

作者:互联网

  本文参考 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这个结果返回。

  

标签:语句,弊端,快照,1000001,session,万次,100
来源: https://www.cnblogs.com/juniorMa/p/14197926.html