当前位置: 首页 > news >正文

Oralce RAC DRM详解

为了保证CacheFusion的性能,Oracle提供了一个名为DRM的机制,通常情况下一个进程获取一个Buffer可能会有以下几种情况:

1.最快的情况:

进程查看buffer的属主信息,确定属主就是自己,并且在与LMS通信之后命中了自己的缓冲区,这种情况就可以直接读缓冲区的buffer效率就非常高。

2.较好的情况:

进程查看buffer的属主信息,确定属主就是自己,并且在与LMS通信之后命中了其它节点的缓冲区,这个时候通过socket通信获取其它节点内存中缓存的buffer,在这种情况下buffer通过网络获取,效率较高,高于从磁盘上获取。

3.比较普通的情况:

进程查看buffer的属主信息,确定属主就是自己,并且在与LMS通信后没能命中缓冲区,这个时候就需要从共享磁盘中读上来一块buffer,磁盘IO的效率是慢于socket通信的,在该种情况下效率低于情况2.

4.较差的情况

进程查看buffer的属主信息,确定属主不是自己,本节点LMS会与属主节点LMS进行socket通信,属主节点LMS接收到请求后请求的buffer命中了其它节点的缓冲区,这时需要在走一个socket通信将该buffer发送给请求节点,这种情况下需要多发一次socket请求从而影响性能。

5.最差的情况

进程查看buffer的属主信息,确定属主不是自己,本节点的LMS会与属主节点LMS进行socket通信,属主节点LMS在接收到请求后发现请求buffer没能命中任意一个节点的缓冲区,这时需要告知请求节点从共享磁盘中读取该buffer,这种情况既多发了socket又要走磁盘IO效率极差。

根据以上几种情况,不难看出当buffer属主和请求buffer节点时同一个节点时,请求buffer的效率会比较好。DRM就做到了这样一件事。

在数据库启动后所有资源都是均匀分配的,因此无法保证请求节点和属主节点是同一个节点,所以最快的情况和较好的情况出现的概率较低。

DRM的核心思想就是通过统计一个关系被节点访问的次数,从而将这个关系的所有buffer的属主转变为最频繁地访问该关系的节点。

DRM涉及到两个部分分别是数据统计以及资源迁移。

首先本文先来讲解一下数据统计:

在LMS决定授予一个buffer给某个节点之后,会通知LCK0做数据统计,LCK 0会统计数据,并且找出符合DRM要求的关系,该要求为该关系每分钟被某个节点访问超过了6000次并且该关系被某个节点的访问次数是其他节点的50倍,在找出这样的关系后,LCK0进程会把这样的关系涉及到的buffer加入到DRM队列中。

DRM队列是一个环形队列,每个entry是一个windows,一个windows可以容纳64个buffer。

LMD会轮询检查DRM间隔,在达到预定时间后准备开启DRM,该时间默认是10分钟,在达到这个时间后,LMD会查看DRM队列,如果队列中存在元素,那么开启DRM资源迁移。

DRM资源迁移包括四个阶段,分别是静默阶段、冻结阶段、清除阶段、重建阶段以及解冻阶段。

在静默阶段时,LMON通知LMS结束对windows中的数据块之后的请求后,不再接收对这些数据块的其它请求。

在冻结阶段时,LMS会处理当前需要DRM的数据块当前的请求,在处理完当前的请求后LMS不再接受对这些块的新请求,如果用户还希望访问这些块时需要等待。

在清除阶段时,LMS会将对应块在所有节点上的当前的主节点信息删除。

在重建阶段时,LMS会将所有节点的LMS发送本地记录的需要DRM的数据块的信息到新的属主节点,新的属主节点会根据LMS发送的本地记录信息构建新的属主信息并将其写入到自己的内存中。

在解冻阶段时,发起DRM的LMON会向集群所有LMON发送DRM完成的消息,集群其它LMON在接收到该消息后会和本地节点的LMD进程确认本节点的迁移完成状况,在确认DRM完成后,这些节点的LMON会通知发起DRM的节点DRM已完成,LMON在接收到所有节点的确认消息后,会标记本次进行DRM的windows为已完成状态,下一次DRM时LMD不再检索这部分信息,同时如果队列满了,这部分信息会被覆盖掉。

由此可见一次DRM无法满足迁移一整个relation。因此对于一个relation来说需要被多次DRM才能完成整个relation的迁移,因此那些已经完成迁移buffer会被上一个affinity lock,拥有affinity lock的buffer就代表经历了DRM,可以被节点快速访问。

相关文章:

  • JAVA学习-练习试用Java实现“一个简单的多臂老虎机问题 :探索与利用权衡。
  • JAVA学习-练习试用Java实现“一个简单的Q-learning算法 :用于解决迷宫问题”
  • AI Agent在测试设计中的应用
  • Postgre数据库分区生产实战
  • 美国服务器文件系统的基本功能和命令
  • 论文阅读笔记——FLOW MATCHING FOR GENERATIVE MODELING
  • XUANYING炫影-移动版-智能轻云盒SY900Pro和SY910_RK3528芯片_免拆机通刷固件包
  • 在大型中实施访问控制 语言模型
  • BERT***
  • docker环境添加安装包持久性更新
  • Warm-Flow发布1.7.3 端午节(设计器流和流程图大升级)
  • Unity UI系统中RectTransform详解
  • C#面试问题41-60
  • gitLab 切换中文模式
  • 基于 HT for Web 的轻量化 3D 数字孪生数据中心解决方案
  • superior哥深度学习系列(大纲)
  • gbase8s数据库+mybatis问题记录
  • 004 flutter基础 初始文件讲解(3)
  • 【Vim】高效编辑技巧全解析
  • Flutter 4.x 版本 webview_flutter 嵌套H5
  • 网络服务器与个人计算机的区别/网络优化培训
  • 西安品牌网站建设服务商/近期时事新闻
  • 惠阳做网站/无屏蔽搜索引擎
  • 做问卷的网站有哪些内容/免费建网站软件下载
  • 18款禁止未成年软件app/seo顾问服
  • 哪里可以做微网站/广西关键词优化公司