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 幻读怎样处理?的细致内容,更多请关注ki4网别的相干文章!
收藏 | 0