我对如何处理 innodb 中的死锁有点困惑。这是我在网上找到的一个常见场景:
while (some deadlock condition)
{
try {
begin transaction
query 1
query 2 // let's assume this one failed with a deadlock
...
query N
commit
}
catch {
make sure it's a deadlock AND
rollback
}
}
- 问题 1:因此假设查询 2失败,我不应该简单地重复该查询而不是回滚整个事务并且仅在 X 次尝试后回滚?
- 问题 2:没有任何额外隔离指令的简单选择(即 SELECT * FROM table WHERE smth=smth)是否会陷入死锁?