首页 > 其他 > 详细

快照读的弊端

时间:2020-12-27 18:11:20      阅读:30      评论:0      收藏:0      [点我收藏+]

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

  

快照读的弊端

原文:https://www.cnblogs.com/juniorMa/p/14197926.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!