postgresql数据库锁介绍

postgresql锁介绍
1 ACCESS SHARE
"ACCESS SHARE"锁模式只与"ACCESS EXCLUSIVE" 锁模式冲突;
查询命令(Select command)将会在它查询的表上获取"Access Shared" 锁,一般地,任何一个对表上的只读查询操作都将获取这种类型的锁。
2 ROW SHARE
 "Row Share" 锁模式与"Exclusive’和"Access Exclusive"锁模式冲突;
"Select for update"和"Select for share"命令将获得这种类型锁,并且所有被引用但没有 FOR UPDATE 的表上会加上"Access shared locks"锁。
3 ROW EXCLUSIVE
 "Row exclusive" 与 "Share,Shared roexclusive,Exclusive,Access exclusive"模式冲突;
"Update,Delete,Insert"命令会在目标表上获得这种类型的锁,并且在其它被引用的表上加上"Access shared"锁,一般地,更改表数据的命令都将在这张表上获得"Row exclusive"锁。
4 SHARE UPDATE EXCLUSIVE
"Share update exclusive,Share,Share row ,exclusive,exclusive,Access exclusive"模式冲突,这种模式保护一张表不被并发的模式更改和VACUUM;
 "Vacuum(without full), Analyze "和 "Create index concurrently"命令会获得这种类型锁。 
5 SHARE
与"Row exclusive,Shared update exclusive,Share row exclusive ,Exclusive,Access exclusive"锁模式冲突,这种模式保护一张表数据不被并发的更改;
"Create index"命令会获得这种锁模式。
6 SHARE ROW EXCLUSIVE
与"Row exclusive,Share update exclusive,Shared,Shared row exclusive,Exclusive,Access Exclusive"锁模式冲突;
任何Postgresql 命令不会自动获得这种锁。
7 EXCLUSIVE
与" ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE"模式冲突,这种索模式仅能与Access Share 模式并发,换句话说,只有读操作可以和持有"EXCLUSIVE"锁的事务并行;
任何Postgresql 命令不会自动获得这种类型的锁;
8 ACCESS EXCLUSIVE
与所有模式锁冲突(ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, and ACCESS EXCLUSIVE),这种模式保证了当前只有一个事务访问这张表;
"ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL" 命令会获得这种类型锁,在Lock table 命令中,如果没有申明其它模式,它也是缺省模式。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29371470/viewspace-1582910/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29371470/viewspace-1582910/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值