【问题标题】:Lightest lock for exclusive inserts in PostgreSQLPostgreSQL 中用于独占插入的最轻锁
【发布时间】:2017-06-27 12:55:11
【问题描述】:

我想将 INSERT 限制为任何获得锁的事务(其他事务排队等待,没有失败),同时允许并发读取、更新和删除(但显然不是正在插入的数据,这在 PG 中是不可能的)。

实现这一点的最轻的 LOCK 是什么?

【问题讨论】:

  • AFAIK 这是不可能的,防止插入的锁也防止更新和删除。也许如果你解释为什么你需要这个,有人可以提供不同的解决方案。
  • 我想通了。我假设 SHARE ROW EXCLUSIVE 是我的最佳选择?
  • 你不需要做任何事情。只需插入您需要的数据 - 任何其他尝试插入 same 主键值的事务都会自动等待。对该表的选择、更新和删除仍然有效。
  • 我在每笔交易的序列中手动操作起始编号。我对此有一个具体的合理理由

标签: postgresql transactions locking postgresql-9.6


【解决方案1】:

是的,如果您想针对所有并发修改锁定表,SHARE ROW EXCLUSIVE 是最便宜的锁。

我不会问你为什么要以这种方式限制并发......

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2015-04-16
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 2010-09-22
    相关资源
    最近更新 更多