我是 Postgres 的新手,所以这可能很明显(或者非常困难,我不确定)。
我想强制一个表或行一次“锁定”至少几秒钟。这将导致第二个操作“等待”。
我正在使用带有“github.com/lib/pq”的golang与数据库进行交互。
我需要这个的原因是因为我正在开发一个监控 postgresql 的项目。谢谢你的帮助。
我是 Postgres 的新手,所以这可能很明显(或者非常困难,我不确定)。
我想强制一个表或行一次“锁定”至少几秒钟。这将导致第二个操作“等待”。
我正在使用带有“github.com/lib/pq”的golang与数据库进行交互。
我需要这个的原因是因为我正在开发一个监控 postgresql 的项目。谢谢你的帮助。
您还可以使用 select ... for update 在事务的长度内锁定一行或多行。
基本上,它就像:
begin;
select * from foo where quatloos = 100 for update;
update foo set feens = feens + 1 where quatloos = 100;
commit;
这将在 quatloos = 100 的 foo 表行上执行排他行级锁定。任何其他尝试访问这些行的事务都将被阻止,直到 select for update 运行后发出提交或回滚。
理想情况下,这些锁应该尽可能短。
请参阅:https ://www.postgresql.org/docs/current/static/explicit-locking.html