仅在授予锁定时执行Postgres查询

时间:2018-05-09 04:35:18

标签: postgresql concurrency locking

我有一些SQL查询将在集群环境中执行。我正在尝试使用Postgres建议锁来防止多次执行这些查询。

  • 开始交易。
  • 执行pg_try_advisory_xact_lock并检查布尔返回值。
  • 如果true(获取了锁),则继续执行实际的业务逻辑查询(任意)。
  • 如果false(另一个实例已经持有独占锁),则不执行任何操作。
  • 结束交易。

请注意,我正在使用返回布尔值的非阻塞_try_变体。如果锁不能立即可用,则其他一些实例已在执行该命令,因此无需执行任何操作。

问题“PostgreSQL IF statement”建议使用IF嵌入PL / pgSQL DO子句。如果没有这种额外的复杂性,有没有办法做到这一点?

0 个答案:

没有答案