PostgreSQL中的表锁

瓦尔特洛克

我正在开发一个应从一个表中获取数据并在另一表中记录处理结果的应用程序。所有这些都在一个线程和几台计算机上完成。因此,我需要为此使用一些同步机制。就我需要使用的多于一台计算机而言,我必须在数据库中使用某种同步机制(在我的情况下是PostgresSQL),而不是使用代码锁定。我知道postgres提供了对表的锁定,但是我没有找到任何文档来设置它。

可能已经有一些标准的解决方案了吗?

经过

是的,Postgres在表级别提供了锁定机制。您可以使用SQL锁定表,然后在完成工作后将其解锁。

有关详细信息,请参见手册的显式锁定章节

但是考虑到您的情况,您可以使用一些简单的机制来实现相同的目的,例如,向表中增加一列-locking_status布尔值。一台机器使用它时,可以将其设置为TRUE,然后根据需要进行切换。但是,如果您有1个以上的表,则锁定表是唯一的选择。

您还需要照顾高度可扩展的多线程程序,因为一个应用程序可能已经锁定了表,然后该机器可能会关闭。在这种情况下,您的表将保持锁定状态,应用程序将变得无响应。(但是取决于您如何处理此状态)。在这种情况下,某种过期机制可能会有所帮助,它将在特定时间后解锁表。

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章