Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1267010
  • 博文数量: 125
  • 博客积分: 4372
  • 博客等级: 上校
  • 技术积分: 1055
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-12 09:53
文章分类

全部博文(125)

文章存档

2019年(3)

2018年(2)

2017年(1)

2016年(2)

2015年(4)

2014年(11)

2013年(5)

2012年(4)

2011年(12)

2010年(10)

2009年(17)

2008年(17)

2007年(25)

2006年(12)

分类: Oracle

2008-06-27 17:13:29

table lock mode的分类

table lock mode的分类为5种:
s, x, rx, rs, srx
s:share;
x;exclusive;
r:row.
 

ROW SHARE 行共享,允许其他用户同时更新其他行,允许其他用户同时加共享锁,不允许有独占(排他性质)的锁

ROW EXCLUSIVE  行排他,允许其他用户同时更新其他行,只允许其他用户同时加行共享锁或者行排他锁

SHARE 共享,不允许其他用户同时更新任何行,只允许其他用户同时加共享锁或者行共享锁

SHARE ROW EXCLUSIVE  共享行排他,允许其他用户同时更新其他行,只允许其他用户同时加行共享锁

EXCLUSIVE 排他,其他用户禁止更新任何行,禁止其他用户同时加任何锁

总结:名称中带ROW的锁的共性是允许其他用户同时更新不同行,
根据是否允许其他用户同时加锁的种类不同而分不同类型            

如果不希望别的session lock/insert/update/delete表中任意一行,只允许查询,
可以用lock table table_name in exclusive mode。(X)这个锁定模式级别最高,并发度最小。

如果允许别的session查询或用select for update锁定记录,不允许insert/update/delete,
可以用lock table table_name in share row exclusive mode。(SRX)

如果允许别的session查询或select for update以及lock table table_name in share mode,
只是不允许insert/update/delete,可以用lock table table_name in share mode。
(share mode和share row exclusive mode的区别在于一个是非抢占式的而另一个是抢占式的。
进入share row exclusive mode后其他session不能阻止你insert/update/delete,
而进入share mode后其他session也同样可以进入share mode,进而阻止你对表的修改。(S)

还有两种锁定模式,row share(RS)和row exclusive(RX)。他们允许的并发操作更多,
一般直接用DML语句自动获得,而不用lock语句。

摘自:
http://shuanhe1999.blog.163.com/ ... 619782008325984680/

阅读(1779) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~