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 幻读怎么解决?的细致内容,更多请关注 百分百源码网 其它相干文章!