RAC之GRD和PCM lock简介

php中文网
发布: 2016-06-07 17:23:27
原创
1004人浏览过

GRD中记录PCM lock的信息,它位于每个实例的SGA中,但每个实例都仅含部分GRD、所有实例的GRD汇总在一起才是一个完整的GRD

grd中记录pcm lock的信息

它位于每个实例的SGA中

但每个实例都仅含部分GRD、所有实例的GRD汇总在一起才是一个完整的GRD

PCM lock有3个主要属性:Mode、Role、PI

① Mode

--S

--X

--NULL

对于S,X两种锁模式这里不再赘述

而NULL代表对应的内存空间可以被重用、在没有被重用之前、实例是不能访问这里的数据

② Role

Role这个属性是用来描述“脏块”在集群间的分布状况

注意,“脏”只是用来描述数据块的内存版本和磁盘版本是否一致、和事务没有关系

Role有两个取值:Local和Global

⑴ 对于Local Role、Mode只会是S或X:

Ⅰ 如果Mode是S,则该数据块内存版本和磁盘版本一致

Ⅱ 如果Mode是X, 则该数据块内存版本和磁盘版本不同

当拥有Local Role和X Mode的实例给其他实例发送数据块:

Ⅰ 如果接收方收到的也是和磁盘一致的版本的,那么本实例(发送方)仍然保持Local Role

UP简历
UP简历

基于AI技术的免费在线简历制作工具

UP简历 128
查看详情 UP简历

Ⅱ 如果接收方收到的和磁盘版本不一致,那么发送方和接收方的角色就要转换成Global

⑵ 对于Global Role、Mode可以是S、X、或NULL

Global Role意味着一个“脏块”同时被多个实例拥有

如果想要把这个“脏块”flush到磁盘,必须要联系GRD,让拥有该块Current版本的实例完成写动作

但对于拥有Local Role的实例而言,如果要把“脏块”flush到磁盘,不需要联系GRD,由本实例完成即可

③ Past Image

下面通过例子说明什么是Past Image

假设一个2节点的RAC集群,块_A在磁盘上的SCN=1

1)node1要修改块_A,从磁盘读入SGA进行修改,修改后块_A在内存中的SCN=2

2)node2也要修改块_A,,node1就会通过cache fusion把块_A传送给node2,传的是SCN=2的版本,

即Current copy的数据块,这时node1还是会保留这个SCN=2的块在SGA中,但是不能再进行任何修改

这时node1拥有的这个Image就叫做“Past Image”

在node1发送Current copy之前,会先把相应的redo entry flush到redo log

3)node2修改这个数据块,修改后SCN=3,但磁盘的版本仍然是SCN=1

4)如果node1发生检查点事件,因为node1上块_A是“脏块”,所以块_A必须被同步到磁盘

5)node1会联系GRD,发现node2拥有块_A的Current版本,GRD会通知node2把这个块写入磁盘

6)node2完成写之后,会通知所有拥有PI版本的实例释放他们所拥有的PI内存

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号