DRM和read-mostly locking

讲DRM(Dynamic Resource Remastering),首先一定说说cache fusion的机制,cache fusion是在8i OPS中引入,解决的目的是原来在OPS中,instance A读某个block,instance B也要读时,instance A必须把该block写入到磁盘,然后由instance B从磁盘读取。当时在8i中引入cache fusion,使得“读”能跨节点的“读”,但是“写”(或者说修改),还是要写入到磁盘,再在另一个节点读出来,然后修改。

在9i中,“写”得到了改进,脏块也能跨节点的传输。这就是常说的Write / Write Cache Fusion。

10gR1引入DRM,但当时的DRM功能很有限,只有在instance变化的时候(如instance被踢出集群,instance加入集群)才进行资源的remastering。

10gR2引入Affinity Locks和Object级别的DRM。

11g引入Read-Mostly和Reader Bypass

当对象变成read-mostly的时候,打开S lock就变成非常廉价的操作了,因为没有消息传递,并且没有了分配和初始化LE(LOCK ELEMENT)、lock context、KJBL结构、KJBR结构和准备READING buffer。

read-mostly lock是非常简单的在buffer header处标记KCBBHFRM,这和S lock的操作是等价的。read-mostly lock会很快被grant。

相关文章

一条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.