我理解当两个或多个实体阻塞某些源时会发生死锁,但没有一个能够完成,因为它们是以循环方式阻塞源的。
select语句会出现死锁吗?select语句会阻塞资源吗?我相信插入或更新将阻止行,但对于select语句不是很确定。请指点。
发布于 2015-02-05 04:57:35
使用InnoDB存储引擎(默认),读取是非阻塞的-因此两个选择不能彼此阻塞。InnoDB是一个使用MVCC (多版本并发控制)的版本控制引擎,这意味着一个事务(A)将在某一时刻获取感兴趣的记录的副本--如果它修改并提交数据,那么在提交之后开始的任何事务都会看到新的副本,但是在事务开始之前(B),在A启动之后,在A提交之前将看到A所看到的副本。只有当其中一个事务修改数据时才会发生死锁(在InnoDB中按行级别进行锁定)。
有关更多信息,请参见这里和这里。对于MyISAM表(我对此知之甚少!),请查看这里的比较,或者只是Google "MyISAM对InnoDB“(129,000次点击量)。
https://stackoverflow.com/questions/28335993
复制相似问题