解决死锁:并发事务调用存储函数 inserting/updating a table

Resolving deadlock: concurrent transactions calling stored function inserting/updating a table

我 运行 陷入死锁状态,因为多个并发事务正在调用插入或更新 table 的存储函数。每个事务执行一次批量更新,使用 Postgres 10.

通常,在所有 INSERTUPDATE 和 [=12] 中强制 一致的行顺序 =] 跨 所有 个并发事务的命令完全避免了死锁。

功能或无功能,通常与死锁没有任何关系。您的事务在其生命周期内获得的锁越多,花费的时间越长,死锁的可能性就越大。 "Batch updates" 是这里的主要嫌疑人。可能需要为 UPDATE ...

锁定的行

相关:

解决方案的详细信息取决于您问题的未公开详细信息。