小编Ale*_*nko的帖子

优化 Postgres 中的并发更新

我正在运行这样的并发 Postgres 查询:

UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Run Code Online (Sandbox Code Playgroud)

每个查询都会影响固定的 K 行数,我找不到强制执行更新行顺序的方法,最终导致死锁。目前我通过手动执行订单来解决这个问题,但这意味着我必须执行比平时更多的查询,同时还将搜索复杂度从 O(log N + K) 提高到 O(K log N)。

有没有办法提高性能而不会最终容易陷入死锁?我怀疑如果Postgres 以扫描它们的相同顺序更新行,用(baz)索引替换(baz, id)索引可能会起作用,这是一种值得追求的方法吗?

postgresql deadlock locking update

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

deadlock ×1

locking ×1

postgresql ×1

update ×1