postgresql “选择共享”是否不交易就不生效?

8yparm6h  于 2022-12-03  发布在  PostgreSQL
关注(0)|答案(1)|浏览(77)

为了理解“为分享而选择”,我只是读了https://shiroyasha.io/selecting-for-share-and-update-in-postgresql.html
我只想确认一下,如果我在没有事务的情况下进行“选择共享”,例如:

select * from table_a where id = 1 for share

由于事务只有这一条select语句,所以虽然“for share”获得了锁,但锁会立即被释放,大致相当于“no lock”,对吧?

bvpmtnay

bvpmtnay1#

确实,锁的持有时间不会超过语句的执行时间,因此它是无用的。但是,SELECT ... FOR SHARE会像修改其他行锁一样修改被锁定的行,从而导致写操作并阻塞所有并发修改,并且语句将获得一个事务ID。
因此,您正在为行锁付出代价,而没有任何好处。

相关问题