|
最初由 超级野人 发布
[B]一个进程只需要知道是否有别的进程在pin住这个buffer就可以了。
我就是问oracle怎么知道是否有别的进程在pin这个buffer,因为可能有很多的tranction同时在read这个buffer,oracle该怎么判断到底哪个tranction在最后时刻read完该buffer,因为不同的tranction不一定read的时间一样吧!oracle肯定要等待最后的tranction完成read之后,才能解除pin,我就是问,oracle该怎么知道什么时候解除该pin! [/B]
一个进程,pin buffer --- read data --- free pin 这是一个原子的过程,这是由读取或者修改buffer的进程自己来完成的。
如果你要追究到 9i 的 同时读 的问题,这个,我没去研究过这个结构,也许是一个list。
所以,如果你非要一个完美的答案,那就按照8i的机制给你答复,任意两个进程,连读都是相互排斥的,这样就不存在你所说的一系列问题。 |
|