解决死锁:并发事务调用存储函数 inserting/updating a table
Resolving deadlock: concurrent transactions calling stored function inserting/updating a table
我 运行 陷入死锁状态,因为多个并发事务正在调用插入或更新 table 的存储函数。每个事务执行一次批量更新,使用 Postgres 10.
通常,在所有 INSERT
、UPDATE
和 [=12] 中强制 一致的行顺序 =] 跨 所有 个并发事务的命令完全避免了死锁。
功能或无功能,通常与死锁没有任何关系。您的事务在其生命周期内获得的锁越多,花费的时间越长,死锁的可能性就越大。 "Batch updates" 是这里的主要嫌疑人。可能需要为 UPDATE
...
锁定的行
相关:
- Deadlock with multi-row INSERTs despite ON CONFLICT DO NOTHING
- How to simulate deadlock in PostgreSQL?
解决方案的详细信息取决于您问题的未公开详细信息。
我 运行 陷入死锁状态,因为多个并发事务正在调用插入或更新 table 的存储函数。每个事务执行一次批量更新,使用 Postgres 10.
通常,在所有 INSERT
、UPDATE
和 [=12] 中强制 一致的行顺序 =] 跨 所有 个并发事务的命令完全避免了死锁。
功能或无功能,通常与死锁没有任何关系。您的事务在其生命周期内获得的锁越多,花费的时间越长,死锁的可能性就越大。 "Batch updates" 是这里的主要嫌疑人。可能需要为 UPDATE
...
相关:
- Deadlock with multi-row INSERTs despite ON CONFLICT DO NOTHING
- How to simulate deadlock in PostgreSQL?
解决方案的详细信息取决于您问题的未公开详细信息。