我有一张简单的表
CREATE TABLE counter (
id int(11) NOT NULL AUTO_INCREMENT,
x_counter int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
和一个简单的查询
begin transaction
for (i=0 to 10)
update counter set x_counter = x_counter + 1 where id = XYZ;
commit
当我从多个进程运行具有相同XYZ值的查询(每个进程更新同一行)时,不会发生死锁(我认为我做了足够的测试来说明它)
但是当我进行完全相同的测试时,除了使用不同的XYZ值(每个进程更新不同的行)之外,我都会遇到死锁。
我对它发生的原因有所了解,但我不确定(不是数据库专家)。
有人可以解释一下这里发生了什么,我该如何预防呢?
由于