数据库死锁的典型原因之一是两个事务以不同的顺序插入和更新表。
例如,事务A插入表A,然后插入表B。
在表B中插入事务B,后面是A。
这样的场景总是存在数据库死锁的风险(假设您没有使用可序列化的隔离级别)。
我的问题是:
发布于 2009-04-12 04:58:07
所有事务都在同一order.
发布于 2009-04-10 16:28:50
死锁没什么大不了的。只要准备好在失败时重新尝试您的事务即可。
把它们留短点。包含很少记录(通过索引的魔力)的查询组成的短事务是最小化死锁的理想方法--更少的行被锁定,并且时间更短。
您需要知道,现代数据库引擎不会锁定表;它们会锁定行;所以死锁的可能性要小一些。
您还可以通过使用MVCC和一致的读取事务隔离级别来避免锁定:一些线程将只看到陈旧的数据,而不是锁定。
发布于 2009-04-12 05:19:25
https://stackoverflow.com/questions/735894
复制相似问题