广告
返回顶部
首页 > 资讯 > 数据库 >DMRAC缓存交换
  • 531
分享到

DMRAC缓存交换

2024-04-02 19:04:59 531人浏览 安东尼
摘要

缓存交换 根据目前的硬件发展状况来看,网络的传输速度比磁盘的读、写速度更快,因此,DMRAC集群引入了缓存交换(Buffer Swap)技术,节点间的数据页尽可能通过网络传递,避免通过磁盘的写入、再读出方式

缓存交换
根据目前的硬件发展状况来看,网络的传输速度比磁盘的读、写速度更快,因此,DMRAC集群引入了缓存交换(Buffer Swap)技术,节点间的数据页尽可能通过网络传递,避免通过磁盘的写入、再读出方式在节点间传递数据,从而减少数据库io等待时间,提升系统的响应速度。

缓存交换的实现基础是GBS/LBS服务,在GBS/LBS中维护了Buffer数据页的相关信息。包括:1. 闩的封权限(LATCH);2. 哪些站点访问过此数据页(Access MAP);3. 最新数据保存在哪一个节点(Fresh EP)中;4. 以及最新数据页的LSN值(Fresh LSN)等信息。这些信息作为LBS封锁、GBS授权和GBS权限回收请求的附加信息进行传递,因此并不会带来额外的通讯开销。

下面,以两节点DMRAC集群(EP0/EP1)访问数据页P1为例子。初始页P1位于共享存储上,P1的GBS控制结构位于节点EP1上。初始页P1还没有被任何一个节点访问过,初始页P1的LSN为10000。通过几种常见场景分析,逐步深入,解析缓存交换的原理。
场景1
节点EP0访问数据页P1。
1. 节点EP0的本地LBS向EP1的GBS请求数据页P1的S LATCH权限
2. 节点EP1的GBS修改P1控制结构,记录访问节点EP0的封锁模式为S LATCH(数据分布节点为EP0),并响应EP0的LBS请求
3. 节点EP0的LBS获得GBS授权后,记录获得的授权模式是S_LATCH,P1数据不在其他节点的Buffer中,发起本地IO请求,从磁盘读取数据。
IO完成后,修改LBS控制结构,记录数据页上的LSN信息
DMRAC缓存交换

场景2
节点EP1访问数据页P1。
1. 节点EP1本地LBS向EP1的GBS请求数据页P1的S LATCH权限
2. 节点EP1的GBS修改控制结构,记录访问节点EP1的封锁模式为S LATCH(数据分布节点为EP0/EP1),并响应EP1的LBS请求
3. 节点EP1的LBS获得GBS授权后,记录获得的授权模式是S LATCH,根据数据分布情况,EP1向EP0发起P1的读请求,通过内部网络从EP0获取
数据,而不是重新从磁盘读取P1数据
DMRAC缓存交换
场景3
节点EP0修改数据页P1。
1. 节点EP0本地LBS向EP1的GBS请求数据页P1的X LATCH权限(附加LSN信息)
2. 节点EP1的GBS修改控制结构的LSN值,从EP1的LBS回收P1的权限
3. 修改访问节点EP0的封锁模式为S + X LATCH,并响应EP0的LBS请求
4. 节点EP0的LBS获得GBS授权后,记录获得的授权模式是S + X LATCH
5. 节点EP0修改数据页P1,LSN修改为11000
这个过程中,只有全局Latch请求,数据页并没有在节点间传递。
DMRAC缓存交换
修改之后,数据页P1的LSN修改为11000。如下所示:
DMRAC缓存交换

场景4
节点EP1修改数据页P1。
1.节点EP1本地LBS向EP1的GBS请求数据页P1的X LATCH权限
2.节点EP1的GBS发现P1被EP0以S + X方式封锁,向EP0发起回收P1权限的请求
3.节点EP0释放P1的全局LATCH,响应GBS,并且在响应消息中附加了最新的PAGE LSN值
4.节点EP1的GBS收到EP0的响应后,修改GBS控制结构,记录最新数据保存在EP0,最新的LSN值信息,记录EP0获得的授权模式是S + X LATCH
(此时,数据分布节点仍然是EP0/EP1),并授权EP1的LBS
5.节点EP1的LBS收到授权信息后,记录获得的授权模式是S + X LATCH,并根据数据分布情况,向节点EP0发起数据页P1的读请求
6.节点EP1修改数据页P1,LSN修改为12000
DMRAC缓存交换

修改之后,数据页P1的LSN修改为12000。如下所示:
DMRAC缓存交换

这个过程中,数据页P1的最新数据从EP0传递到了EP1,但并没有产生磁盘IO。

您可能感兴趣的文档:

--结束END--

本文标题: DMRAC缓存交换

本文链接: https://www.lsjlt.com/news/48129.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • DMRAC缓存交换
    缓存交换 根据目前的硬件发展状况来看,网络的传输速度比磁盘的读、写速度更快,因此,DMRAC集群引入了缓存交换(Buffer Swap)技术,节点间的数据页尽可能通过网络传递,避免通过磁盘的写入、再读出方式...
    99+
    2022-10-18
  • Ubuntu如何设置交换内存
    Ubuntu设置交换内存的示例:打开终端命令行模式,输入以下命令查看系统内Swap分区大小。total used free shared buffers cacheMem: 1002 964 38 0 21 410-/+ buffers/c...
    99+
    2022-10-11
  • flutter实现切换页面缓存
    本文实例为大家分享了flutter实现切换页面缓存的具体代码,供大家参考,具体内容如下 一、实现底部导航栏切换页面缓存 实现底部导航栏切换页面缓存需要在pubspc.yamal中导入...
    99+
    2022-11-13
  • Python实现FIFO缓存置换算法
    本文实例为大家分享了Python实现FIFO缓存置换算法的具体代码,供大家参考,具体内容如下 在上一节中我们实现了双向链表DoubleLinkedList类,本节我们基于双向链表实现...
    99+
    2022-11-11
  • linux swap交换内存扩容的方法
    swap交换内存主要是指当物理内存不够用时,系统会启用硬盘的一部分空间来充当服务器内存,而默认情况下swap内存会有一些设置标准,它与物理内存的大小也是有关系的,具体标准如下: Ram大小 Swap大小 激活...
    99+
    2022-06-03
    linux swap交换内存扩容 linux swap 内存扩容
  • php共享缓存之Yac替换APCU memcache!
    本篇文章给大家带来了关于php+yac的相关知识,其中主要跟大家聊一聊怎么用Yac替换APCU memcache,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。yac 缓存Yac 是用于 PHP 的共享和无锁内存用户数据缓存。它可以用来...
    99+
    2023-05-14
    php Yac
  • Python实现以时间换空间的缓存替换算法
    缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速度很快。缓存就是把一些数据暂时存放于某些地方,可能是内存,也有可能硬盘。 在使用Scrapy爬网站的时候,产生出来的附加产物,因为在S...
    99+
    2022-06-04
    缓存 算法 时间
  • Redis中怎么使用缓存替换策略
    Redis中怎么使用缓存替换策略,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1 概述在操作系统的页面管理中,内存会维护一部分数据以备进程使用,但是由于内存的大小必然是远远...
    99+
    2023-06-20
  • Ubuntu设置交换内存的方法是什么
    本篇内容介绍了“Ubuntu设置交换内存的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.打开终端命令行模式,输入以下命令查看系...
    99+
    2023-07-04
  • Postmanxmysql不切换环境缓存数据到本地
    目录背景痛点1. 想法1--后台提供接口2. 想法2--nodejs搭服务3. 想法3--自定义执行脚本第一版:满足基本功能第二版:参数预先设置电三版:兼容win/mac系统(最终版...
    99+
    2023-02-10
    Postman xmysql本地数据缓存 Postman xmysql
  • linux swap交换内存扩容的方法是什么
    这篇文章主要为大家分析了linux swap交换内存扩容的方法是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“linux swap交换内存扩容的方法是什...
    99+
    2023-06-28
  • 缓存替换策略及应用(以Redis、InnoDB为例)
    1 概述 在操作系统的页面管理中,内存会维护一部分数据以备进程使用,但是由于内存的大小必然是远远小于硬盘的,当某些进程访问到内存中没有的数据时,必然需要从硬盘中读进内存,所以迫于内存...
    99+
    2022-11-12
  • LRU缓存替换策略及C#实现方法分享
    目录LRU缓存替换策略核心思想不适用场景算法基本实现算法优化优化思路:进一步优化BenchmarkLRU缓存替换策略 缓存是一种非常常见的设计,通过将数据缓存到访问速度更快的存储设备...
    99+
    2023-05-17
    基于无锁的C#并发队列 cas实现无锁队列 cas无锁技术的理解
  • 有关vue 组件切换,动态组件,组件缓存
    目录一.组件的切换方式方式一: 使用 v-if和v-else方式二:使用内置组件:<component></component>方式三 : vue-route...
    99+
    2022-11-12
  • linux expect 自动登录交换机保存配置的方法
    telnet.exp 文件内容如下: #!/usr/bin/expect -f set ip [lindex $argv 0 ] set username [lindex $argv 1 ] se...
    99+
    2022-06-04
    linux expect 交换机 配置
  • 能直接与CPU交换信息的存储器是哪个
    能直接与CPU交换信息的存储器是缓存存储器,位于CPU和主存储器之间,它的主要作用是加快CPU对数据的访问速度,提高计算机系统的整体性能。能直接与CPU交换信息的存储器是缓存存储器(Cache Memory)。缓存存储器是计算机系统中一种高...
    99+
    2023-08-09
  • C++中怎么利用LeetCode使用页面置换缓存器
    C++中怎么利用LeetCode使用页面置换缓存器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。[LeetCode] 146. LRU Cache 最近最少使用页面置换缓存...
    99+
    2023-06-20
  • LyScript实现内存交换与差异对比的方法详解
    目录内存区域交换内存区域对比内存与磁盘机器码比较内存ASCII码解析内存特征码匹配LyScript 针对内存读写函数的封装功能并不多,只提供了内存读取和内存写入函数的封装,本篇文章将...
    99+
    2022-11-11
  • linux系统swappiness参数在内存与交换分区间优化
    http://blog.itpub.net/29371470/viewspace-1250975swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swa...
    99+
    2023-06-05
  • vue Tab切换以及缓存页面处理的几种方式
    目录1.如何切换2.动态生成tab3.缓存组件3.1 keep-alive3.2 使用3.3 缓存组件的生命周期函数1.如何切换 使用动态组件,相信大家都能看懂(部分代码省略) ...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作