对于Oracle表级共享锁,有点想不明白,A锁住表T之后,B可以读T,不能改T,这个功能完全可以只用一个锁的概念(独占锁)就可以实现,为什么还要加一个共享锁的概念呢?
刚做了如下的实验:
会话A在T上加S锁
数据:A可以修改数据,会话B不能修改数据。
结构:A可以修改表结构,会话B不能修改表结构。
锁:会话B可以加S锁,但不能加X锁
会话A给T加X锁
数据:A可以改数据,会话B不能修改数据
结构:A可以改结构,会话B不能改结构
锁:会话B不能加S锁,也不能加X锁。
从上面的实验可以看出,共享锁和独占锁,在表数据和表结构上的功能是完全一样的,请问为什么要在这里把表级锁分成共享锁和独占锁呢?
本人也是菜鸟,我说一下我的理解,共享锁的目的就是别人还可以查数据但是不能改,如果只用独占锁的话,别人也不能查数据了,那样读数据库的效率就太低了。