经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
cache-fusion笔记
来源:cnblogs  作者:昔日丶芳华  时间:2019/4/25 9:19:09  对本文有异议

 

GRD  (global resource directory)保存着所有实例中资源的分布情况

GCS  (global cache service)具体执行cache fusion 工作的服务,对应进程LMSn

GES  (global enqueues service)协调实例之间的GCS完成数据传递工作,完成non-cache fusion资源的管理工作,对应进程LMD.

 

 

 

Cache-fusion全局锁

全局锁的分配是通过每个节点的GES服务协调完成的,每个时间点只有一个实例能够修改相同的数据块,通过GES的协调获得块的全局锁之后,GCS负责实例间数据块的传递工作。(cache fusion的频繁使用会导致数据性能的下降)。

GES(全局队列服务)负责维护字典缓存和库缓存内的一致性。字典缓存是实例的SGA内所存储的对数据字典信息的缓存,用于高速访问数据字典信息。GES控制数据库中所有的library cache锁和dictionary cache锁。

数据一致性

实例A的一个事务更新了一个数据块,但没有提交,这个时候实例B查询包含事务的这个数据块,那么实例A会将UNDO段中的一致性数据块传送给实例B,实例B中存放的该数据块就是CR状态的数据块,并非是当前最新的数据块。如果这个时候实例B要更新这个数据块,实例A会将SGA中当前的数据块降级,然后传递给实例B,实例B中存放的数据块就是当前最新的数据块。(相同的块在不同实例中分布体现在GRD中,GRD能展示块的分布图)

 

Past Image(PI)是维护脏块的拷贝,GCS管理PI,GCS在实例失败恢复的时候会用到PI版本的块。Oracle允许即使操作块的事务未提交,如果其他实例有事务修改相同块的不同行,块也能在实例间传递,但是必须保留原来实例中未提交的块,这个块就是PI.

(1)   并行操作过程中的PI

在多节点实例并行操作的过程中,当实例请求修改块时,GCS服务的LMSn进程会将数据块从最后修改此块的实例传送给请求的实例,而LMSn会在原来持有此块的实例中保留此数据库的PI版本。

(2)   资源的磁盘写

因为可能在集群的多个实例中存在多个被修改过的数据块,由GCS管理的写规则必须确保将最近版本的数据块写入磁盘中。GCS还必须确保所有之前的版本已从其他cache中清除。对数据块的写可以由任何持有此数据块的当前版本或PI数据块的实例发起。

 

 

Cache fusion应用场景

(1)   多节点实例并行读

实例A从吸盘读取一个块的时候,该块在GRD中记录的状态为SCUR,实例B查询该表,通过cache fusion获取该块,由于并不对该块进行更改,所以实例A块的状态没有发生变化,在实例B中的块的状态是CR。实例C再次执行相同的查询从实例A获取该块,同样实例C中的块状态也是CR。

(2)   多节点实例并行读和写

实例A从磁盘读取数据块到内存中,记录块的状态为SCUR。实例B要更新该块中的行,必须获得排他的锁,且更新的块必须是当前最新的块,实例B通过cache fusion将实例A的块拷贝到自己的buffer cache中,同时实例A的块状态变为CR,实例B中块的状态是XCUR。

(3)   多节点实例并行写

实例A执行UPDATE语句从磁盘读取块到实例中,块的状态为XCUR。实例B要更新同一个块的其他行记录,实例A的块状态变为CR,实例B通过cache fusion将实例A的块拷贝到实例B的buffer cache中,实例B上块的状态为XCUR。如果实例C也要更新同一块,实例C必须等待实例B执行完成后,实例B的状态变更为CR,通过cache fusion将实例B上的块拷贝到实例C,并修改修改实例C块状态为XCUR。以上操作,实例A和实例B中保存的CR状态的块都是PI版本。

 

(参考《构建最高可用RAC》)

原文链接:http://www.cnblogs.com/hfjiang/p/10766301.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号