为了理解“选择共享”,我只读了https://shiroyasha.io/selecting-for-share-and-update-in-postgresql.html。
我只想确认一下,如果我在没有事务的情况下“选择共享”,比如:
select * from table_a where id = 1 for share
由于事务只有这个"select“语句,虽然"for”获得了一个锁,但是锁将立即释放,因此它大致等于“无锁”,对吗?
发布于 2022-12-01 06:34:21
确实,锁的保存时间不会超过语句执行的时间,因此它是非常无用的。不过,SELECT ... FOR SHARE
将像修改任何其他行锁一样修改已锁定的行,从而导致写入和阻塞所有并发修改,并且该语句将获得一个事务ID。
所以你是在为一排锁付出代价,而没有任何好处。
https://stackoverflow.com/questions/74636915
复制相似问题