【发布时间】:2019-08-11 12:32:36
【问题描述】:
我需要在 PostgreSQL 中实现数据库会话之间的同步。
在 SQL Server 中,我将通过创建自己的“锁定”表来实现它。
Create table MyLock(LockName VARCHAR(100) NOT NULL UNIQUE, LockOwner INT NULL)
我不使用显式事务来避免真正锁定事情,我会通过将我的会话 ID 设置为“所有者”来获取我的“单例”锁。
UPDATE MyLock
SET LockOwner = *MySessionId*
WHERE LockName = 'Singleton'
AND LockOwner IS NULL;
通过不使用显式事务,我不会阻止其他进程。 您可以将其视为“软锁”...
如果我的更新成功,那么我知道我“拥有”了锁,我可以处理一些代码,而其他人会等待。 如果我的更新没有更新,我知道其他人有“锁定”,我等待或放弃。
我需要在 PostgreSQL 中实现类似的东西。
你会这样做吗?
【问题讨论】:
标签: postgresql synchronization mutex