MySQL 幻读怎么解决?
发布时间:09/01 来源:未知 浏览:
关键词:
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 幻读如何解决?的具体内容,更多请关注百分百源码网其它相关文章!