|
回复fly_bug朋友的三个问题
1.我应该没有说过“在表级加的都是意向锁”,这么说应该比较确切:在表级的S、X、IS、IX、SIX等5种锁中,S、X不是意向锁,IS、IX是意向锁,SIX是S与IX的组合;一般的DML语句多数情况下不会在表级加S、X、SIX锁,这种情况多发生在有外键的情况,可参考本人今日的BLOG;
http://jeffli73.china-pub.com
2.我想应该从这个角度看,虽然在行级加的都是X锁(实质上是行上的标志位置位),但SELECT FOR UPDATE还没有改变数据,而INSERT/UPDATE/DELETE改变了数据,那么它们对其它并发事务的影响肯定是不一样的,比如RS与S相容,而RX与S不相容,所以有必要区分;
3.与S出现的情况类似,出现在外键引用的是自己所在表的主键情况;(如果你使用ORACLE8,可以在一个表上建立一个自引用,如EMP表上的MGR引用EMPNO,删除一条记录,可以观察到SRX锁; |
|