百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL幻读怎么解决?
分享文章到:

MySQL幻读怎么解决?

发布时间:09/01 来源:未知 浏览: 关键词:
MySQL幻读解决办法:1、MVCC快照,将历史数据存一份快照,在其事务添加与删除数据时,保障目前事务来说是不成见的;2、“next-key”锁,将目前数据行与上一条数据和下一条数据之间的间隙锁定,保障此范畴内读取的数据是一致的。

MySQL 幻读怎么解决?

1、MVCC快照,将历史数据存一份快照,在其事务添加与删除数据时,保障目前事务来说是不成见的;

多数数据库都实现了多版本并发控制,而且都是靠保留数据快照来实现的。

以 InnoDB 为例,每一行中都冗余了两个字断。一个是行的新建版本,一个是行的删除(逾期)版本。版本号随着每次事务的开启自增。事务每次取数据的时候都会取新建版本小于目前事务版本的数据,以及逾期版本大于目前版本的数据。

普通的 select 就是快照读。

select * from T where number = 1;

2、“next-key”锁,将目前数据行与上一条数据和下一条数据之间的间隙锁定,保障此范畴内读取的数据是一致的。

next-key 锁包括两局部

  • 记载锁(行锁)

  • 间隙锁

记载锁是加在索引上的锁,间隙锁是加在索引之间的。(思索:要是列上没有索引会产生什么?)

select * from T where number = 1 for update;
select * from T where number = 1 lock in share mode;
insert
update
delete

举荐教程:《MySQL教程》

以上就是MySQL 幻读怎么解决?的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有157人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板