到底什么是幻读,幻读究竟能造成什么问题

  • Post author:
  • Post category:其他


首先,为了说明白这个问题,我们先建一个表。

create table t(
	id int NOT NULL,
	c int DEFAULT NULL,
  d int DEFAULT NULL,
  primary key (id),
  key c(c)
)engine=innoDB;
insert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25);

现在我们执行这样一行语句。

select * from t where d = 5 for update;

我们很容易得到,由于字段d上没有加上索引,那么这条语句就会使用全表扫描,然后就会锁住主键为5的这一行,那么其他的行会不会锁住呢?



什么是幻读

我们举个例子(和实际发生的不一样)

sessionA sessionB sessionC
T1 begin:
T2 select * from t where d =5 for update;


result :(5,5,5)
T3 update t set d =5 where id =0;
T4



版权声明:本文为qq_41911213原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。