数据库缓存管理

news2024/11/15 12:58:15
1. 简介

缓存管理器是数据库管理系统(DBMS)中负责管理内存中page并处理文件和索引管理器的page请求的组件。由于内存空间有限,我们不能将所有page存储在缓存池中。因此,缓存管理器需要制定替换策略,当空间填满时选择哪些page进行替换。缓存管理器与磁盘空间管理器进行通信,执行所需的磁盘操作。
在这里插入图片描述

2. 缓存池

缓存池是通过将内存划分为可以放置page的frame来创建的。一个缓存frame可以容纳与一个page相同的数据量。为了有效地跟踪frame,缓存管理器会在内存中分配额外空间用于元数据表。

元数据表追踪以下信息:

  • frame ID:唯一关联到内存地址
  • page ID:确定frame当前包含哪个page
  • 脏位:验证page是否被修改
  • 固定计数:跟踪当前使用page的请求者数量
    在这里插入图片描述
3. 处理page请求

当请求的page存在于内存中时,增加page的固定计数,并返回page的内存地址。如果page不在缓存池中且还有空间,找到下一个空frame并将page读入该frame,将page的固定计数设置为1并返回page的内存地址。如果没有空frame,则使用替换策略决定替换哪个page。

替换策略依赖于page访问模式,选择最优策略以减少I/O开销。如果被替换的page设置了脏位,需要将page写回磁盘以确保更新持久化。一旦请求者完成工作,需要通知缓存管理器减少使用page的固定计数。

4. LRU替换策略

LRU(最近最少使用)是一种常用的替换策略。当需要在已满的缓存池中读入新page时,替换最近最少使用且未固定的page。为了跟踪page使用情况,元数据表中添加了“最后使用”列,记录page固定计数减少的最新时间。实现LRU通常成本较高,Clock策略提供了一种高效近似LRU的实现。
在这里插入图片描述

5. Clock替换策略

Clock策略通过使用元数据表中的引用位列和时钟指针变量来高效地近似LRU。算法将元数据表视为一个循环列表,并设置时钟指针为当前考虑的frame。策略如下:

  • 迭代表中的frame,跳过固定的page,找到第一个引用位为0的未固定frame。
  • 每次迭代,如果当前frame的引用位为1,则将其设为0并移动时钟指针到下一个frame。
  • 到达引用位为0的frame时,替换现有page(如果脏位为1,则写回磁盘并设为0),读入新page,设置frame的引用位为1,并移动时钟指针到下一个frame。
    在这里插入图片描述
6. MRU替换策略

MRU(最近最常使用)策略在替换page时,选择最近最常使用的未固定page。尽管看似反直觉,但在某些访问模式下,如重复的顺序扫描,MRU的性能优于LRU。

7. page请求与缓存命中

在处理page请求时,如果请求的page不在缓存池中,需要选择一个未固定的frame进行替换。如果frame为脏,则需要将当前page写回磁盘并标记为干净,读入请求的page,并返回其地址。如果可以预测请求(如顺序扫描),可以提前读取多个page以优化性能。

8. 脏页处理

缓存管理器通过page上的脏位标记发现脏页。当page被修改时,设置脏位。当需要替换脏页时,缓存管理器会将其写回磁盘。

9. 缓存池状态

缓存池是DBMS服务器启动时分配的大范围内存(MB到GB)。缓存管理器的元数据是DBMS服务器启动时分配的小数组。在内存中保持一个基于PageId的哈希表索引,以便快速查找page。

10. 替换策略的选择

替换策略的选择对I/O次数影响很大,取决于访问模式。LRU适用于随机访问,而MRU适用于重复顺序访问。现代DBMS通常使用混合策略以适应不同的工作负载。例如,PostgreSQL使用Clock策略。

总结

缓存管理器提供了一种间接映射,将磁盘page ID映射到内存地址,确保每个请求的page在内存中被固定以进行操作,并在使用完成后解除固定。通过替换不太可能被引用的page和预取可能被引用的page,缓存管理器试图最小化缓存未命中次数。

要点回顾
  • 固定计数和脏位:何时设置/取消设置?由系统的哪一层处理?
  • LRU、MRU和Clock:能够手动运行每个策略。
  • 顺序扫描和缓存未命中的行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1901390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何注册微信公众号

如何注册微信公众号 如何注册一个微信公众号 😊📱摘要引言正文内容1. 准备工作内容定位和受众群体公众号名称和头像 2. 网页注册流程第一步:访问微信公众平台第二步:选择账户注册类型第三步:填写基本信息第四步&#x…

视频技术助力智慧城市一网统管:视频资源整合与智能化管理

随着信息技术的飞速发展,智慧城市已成为现代城市发展的重要方向。在智慧城市建设中,一网统管作为城市管理的重要策略,通过整合各类信息资源,实现资源的优化配置和问题的快速响应。其中,视频技术作为一网统管场景中的关…

使用Livox-Mid360激光雷达,复现FAST_LIO(保姆级教程)

前面我已经完成了mid360激光雷达的驱动安装,octomap的复现,昨天我去把这俩在正式环境中实测了一下,效果不好,走廊转角没建出来,我查了一下,应该是TF的原因,但这部分我还不太懂,看到有…

利用大模型知识库,优化智能客服问答效果 | 创新场景

ITValue 痛点 SSC( Share Service Center ,共享服务中心)是企业日常接触最多的场景之一,更多是对内服务,包括 HR 、财务、IT 等。该场景对专业度要求非常高,知识点非常多,对于知识的使用者或者查…

每日一题~ leetcode 402 (贪心+单调栈)

click me! 这个贪心的推导在leetcode上已经很明确了。 click me! 删除k个数,可以先考虑删除一个数。这也是一种常见的思路。(如果进行同样的操作多次,可以先只 考虑一次操作如何实现,或者他的影响。完成这一次操作后,…

服务器数据恢复—DS5300存储raid5阵列数据恢复案例

服务器存储数据恢复环境: 某单位一台某品牌DS5300存储,1个机头4个扩展柜,50块硬盘组建2组RAID5磁盘阵列(一组raid5阵列有27块成员盘,存放Oracle数据库文件;另外一组raid5阵列有23块成员盘)。存储…

【免费资料】IEEE33节点系统参数及拓扑图visio

主要内容 对于初学配电网的同学,最经典的系统即是33节点配电网系统,在各个研究文献中出现频次最高的也是这个系统,为了让大家更好了解33节点系统参数,本次整理了系统节点、支路参数excel以及33节点网络拓扑图visio&#xff0c…

解决IDEA每次新建项目都需要重新配置maven的问题

每次打开IDEA都要重新配置maven,这是因为在DEA中分为项目设置和全局设置,这个时候我们就需要去到全局中设置maven了。我用的是IntelliJ IDEA 2023.3.4 (Ultimate Edition),以此为例。 第一步:打开一个空的IDEA,选择左…

Multisim仿真-交流数字电压表

下图为整体的原理框图,交流电源经过整流滤波电路转换后,送入模数转换电路,经译码给到显示电路,由其显示交流电源的有效值。 信号发生器XFG1输出正弦波信号(峰峰值),XMM1测量有效值,U6数码管显示有效值。仿真…

38条Web测试经验分享

1. 页面链接检查 每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。 LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测…

vue3【实战】来回拖拽放置图片

效果预览 技术要点 img 标签默认就是可拖拽的(a 标签也是)事件 e 内的 dataTransfer 对象可用于临时存储事件过程中的数据拖拽事件的默认行为是用浏览器新开页签打开被拖拽对象,所以通常需要禁用默认的浏览器行为被拖拽元素必须设置 id&#…

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…

AcWing 1550:完全二叉搜索树

【题目来源】https://www.acwing.com/problem/content/1552/【题目描述】二叉搜索树 (BST) 递归定义为具有以下属性的二叉树: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 (2)若它的右…

BS结构的毕业设计题目管理系统-计算机毕业设计源码92342

目 录 摘要 1 绪论 1.1 研究背景 1.2目的及意义 1.3论文结构与章节安排 2 毕业设计题目管理系统设计分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

【C++】开源:地图投影和坐标转换proj库配置使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍地图投影和坐标转换proj库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&a…

二、从多臂老虎机看强化学习

二、从多臂老虎机看强化学习 2.1 多臂老虎机问题2.1.1 问题定义2.2.2 问题建模2.2.3 累积懊悔2.2.4 估计期望奖励 2.2 强化学习中的探索与利用平衡2.3 贪心策略2.4 上置信界算法2.5 汤普森采样算法 2.1 多臂老虎机问题 2.1.1 问题定义 在多臂老虎机(mutil-armed bandit, MAB)问…

linux 服务器数据备份 和 mysql 数据迁移

查看域名ip 查看程序所处文件位置 list open files 1、 lsof -i :port 查看端口获取进程 pid 2、lsof -i pid 1、scp 下载服务器文件到本地 security copy protocol 2、导出服务器 mysql 数据库(表)到本地 mysqldump是MySQL自带的一个实用程序&…

半同步主从复制

半同步主从复制的概念 半同步主从复制(Semisynchronous Replication, SBR)是MySQL数据库中的一种数据复制方式,它在异步复制的基础上增加了一定程度的同步性,旨在提高数据安全性,减少数据丢失的风险。 半同步主从复制…

Facebook群发消息API接口的申请流程详解!

Facebook 群发消息api接口如何集成?怎么使用API接口? 在现代社交媒体营销中,群发消息是与客户保持互动的重要工具。Facebook群发消息API接口提供了一种有效的方法来实现这一目标。本文将详细介绍如何申请Facebook群发消息API接口的具体步骤和…

51单片机基础10——串口实验

串口实验 51单片机串口实验1. 软硬件条件2. 串口实验2.1 单片机与PC 发送字符2.1.1 效果2.1.2 代码2.1.3 优化 2.3 串口接收数据(指令控制单片机)2.3.1 非中断方式实现2.3.2 中断方式实现 51单片机串口实验 1. 软硬件条件 单片机型号:STC89C52RC开发环境&#xff…