无事务执行select for share是否等同于无锁?
是的,这种情况大致等同于无锁操作。
在PostgreSQL的默认自动提交模式下(不显式开启事务时),每条SQL语句都会作为一个独立的隐式事务执行:
- 执行
select * from table_a where id = 1 for share时,会对匹配的行获取共享锁 - 语句执行完成后,隐式事务立即提交,共享锁会被自动释放
由于锁的持有时间只有语句执行的短暂瞬间,几乎不会对其他并发的读写操作产生阻塞或影响,实际效果和直接执行不带FOR SHARE的普通SELECT语句基本一致。
内容的提问来源于stack exchange,提问作者TieDad
相关产品推荐
相关产品推荐

