数据库共享锁的问题
大家都知道select获得的是共享锁,许多用户可以同时查询相同的数据。
但是我有一个疑问!?
1.如果数据是从内存中获得那么共享锁可以说的通。
2.如果数据不在内存中,而要从磁盘读取??一个磁盘有多少个磁头?应该只有一个吧。
如果几个用户访问相同的数据,而这数据不在内存中。
问他们可以同时读取数据?这个时候共享锁该怎么解释呢?
[解决办法]
2.如果数据不在内存中,而要从磁盘读取??一个磁盘有多少个磁头?应该只有一个吧
====================================================================
知道为什么磁盘称为块设备吗?那是因为磁盘上的数据你只能能寻址到块,磁盘上的数据是不能按字节寻址的,所以要操作任何数据,都必须将数据读入到内存中来,操作完了,再写回磁盘。所以所谓锁,是一个内存中数据结构。对数据块内容的操作(数据行的读写)都是在内存中进行的。所以锁应该是一个内存上的概念,和磁盘无关。
[解决办法]
Oracle的select是没有锁的
你可以测试一下
打开一个cursor,然后查询v$lock.
[解决办法]