读书笔记——《精通 PostgreSQL 11》

LOCK的语法定义

锁可以轻如ACCESS SHARE锁或者重如ACCESS EXCLUSIVE锁。下面的列表展示了 这些锁会做什么。

  • ACCESS SHARE这种类型的锁由读操作获取,它只与ACCESS EXCLUSIVE 冲突,后者会由DROP TABLE之类的操作获取。事实上,这意味着如果一个表 就要被删除,则不能开始一个SELECTo这也暗示着DROP TABLE不得不等待 直到一个正在读取的事务完成。
  • ROW SHARE PostgreSQL 会在 SELECT FOR UPDATE/SELECT FOR SHARE 的情况下取得这种锁。它与EXCLUSIVE以及ACCESS EXCLUSIVE冲突。
  • ROW EXCLUSIVE这种锁由 INSERTUPDATEDELETE取得。它与 SHARESHARE ROW EXCLUSIVEEXCLUSIVE 还有 ACCESS EXCLUSIVE 冲突。
  • SHARE UPDATE EXLUSIVE这种锁由 CREATE INDEX CONCURRENTLYANALYZEALTER TABLE> VALIDATE 和其他与 VACUUM (非 VACUUM FULL) 一样的 ALTER TABLE 形式取得。它与 SHARE UPDATE EXCLUSIVE> SHARESHARE ROW EXCLUSIVE> EXCLUSIVE 以及 ACCESS EXCLUSIVE 锁模式冲突。
  • SHARE当一个索引被创建时,将会设置SHARE锁。它与ROW EXCLUSIVE. SHARE UPDATE EXCLUSIVESHARE ROW EXCLUSIVE. EXCLUSIVE ACCESS EXCLUSIVE 冲突。
  • SHARE ROW EXCLUSIVE这种锁由 CREATE TRIGGER 和某些形式的 ALTER TABLE设置,并且与除了 ACCESS SHARE之外的所有模式都冲突。
  • EXCLUSIVE这种类型的锁是目前为止最严格的一种。它保护操作不受读和写 的影响。如果一个事务取得了这种锁,任何其他人都不能读取或者写入受影响 的表。
  • ACCESS EXCLUSIVE这种锁阻止并发事务进行读取和写入。

应该不惜一切代价避免ACCESS EXCLUSIVE.

======

=========

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值