DBS note4:Buffer Management

news2024/11/28 1:40:25

目录

1、介绍

2、缓冲池

3、处理页面请求

4、LRU替换和时钟策略

1)顺序扫描性能 - LRU

5、最近最常使用替换策略(MRU Replacement)

1)Sequential Scanning Performance - MRU

6、练习题

1)判断真假

2)LRU、MRU、Clock相关问题


1、介绍

我们前面简略讨论了 DBMS 的最低级别如何管理磁盘空间,以及基于页面的数据库系统中如何管理文件和索引。现在,我们将探讨 DBMS 中这两个级别之间的接口 - 缓冲区管理器(the buffer manager)。

缓冲区管理器负责管理内存中的页面,并处理文件和索引管理器的页面请求。请记住,内存空间是有限的,因此我们无法负担得起将所有页面存储在缓冲池中。缓冲区管理器负责淘汰策略,即在空间填满时选择淘汰哪些页面。当页面从内存中淘汰或新页面读入内存时,缓冲区管理器会与磁盘空间管理器通信,执行所需的磁盘操作。

2、缓冲池

内存通过将空间划分为页面可以放置的帧而转化为缓冲池。一个缓冲帧可以容纳与一个页面相同量的数据(因此一个页面完美地适应一个帧)。为了有效跟踪帧,缓冲区管理器在内存中为元数据表分配了额外的空间。

该表追踪了4个信息:

1. 与内存地址唯一关联的 “框架ID”
2. 用于确定框架当前包含哪个页面的 “页面ID”
3. 用于验证页面是否已被修改的 “脏位”
4. 用于跟踪当前使用页面的请求者数量的“Pin计数”

3、处理页面请求

当从缓冲管理器请求页面并且页面已经存在于内存中时,页面的引用计数会递增,并返回页面的内存地址。

如果页面不在缓冲池中且仍有空间,将找到下一个空框架,并将页面读入该框架。页面的引用计数设置为1,并返回页面的内存地址。在页面不存在且没有空框架的情况下,必须使用替换策略确定要驱逐的页面。

替换策略的选择在很大程度上取决于页面访问模式,并通过计算页面命中次数选择最优策略。页面命中是指可以在内存中找到请求的页面而无需访问磁盘。每个页面未命中会产生额外的IO成本,因此良好的淘汰策略对性能至关重要。访问模式的命中率定义为#页面命中次数 / (#页面命中次数 + #页面未命中次数),或更简单地说,#页面命中次数 / #页面访问次数。

此外,如果被驱逐的页面的脏位被设置,则将页面写入磁盘以确保更新被持久化。如果在内存中对页面进行更新,则将脏位设置为1。一旦页面被写回磁盘,脏位就被设置为0。

一旦请求者完成其工作负载,它负责通知缓冲管理器减少其先前使用的页面的引用计数。

4、LRU替换和时钟策略

一个常用的替换策略是 LRU(最近最少使用)。当需要将新页面读入已满的缓冲池时,将淘汰最近最少使用、引用计数为 0 且 "Last Used" 列具有最低值的未固定页面。为了追踪页面的使用情况,在元数据表中添加了一个 "Last Used" 列,用于记录页面引用计数减少的最新时间。LRU 是一个有效的策略选择,因为它会保留常被访问的页面在内存中,由于它们经常被访问,因此很可能是最近使用的。

实现 LRU 通常可能成本较高。时钟策略提供了一种替代实现,它使用元数据表中的一个 ref bit(最近被引用)列和一个时钟手变量来高效地近似 LRU。使用 ref bit 可以降低空间和时间成本。只需每个框架一个比特,而不是多个比特来存储 Last Used 值。在时间方面,缓冲管理器只需跟随clock hand。在 LRU 中,缓冲管理器必须花费时间搜索 Last Used 列中的最小值。

时钟策略算法将元数据表视为帧的循环列表。它在开始时将时钟手设置为第一个未固定的帧,并在将每个页面最初读入帧时将其相应行的ref bit设置为1。该策略在尝试淘汰时的工作方式如下:

1. 遍历表中的帧,跳过固定的页面,并在到达末尾时绕回到帧0,直到找到第一个未固定且ref bit = 0的帧。

2. 在每次迭代期间,如果当前帧的ref bit = 1,则将ref bit设置为0并将时钟手移动到下一个帧。

3. 在到达ref bit = 0的帧时,淘汰现有页面(如果dirty bit被设置,则将其写入磁盘;然后将dirty bit设置为0),读取新页面,将帧的ref bit设置为1,并将时钟手移动到下一个帧。

如果访问当前在缓冲池中的页面,则时钟策略将页面的ref bit设置为1而不移动时钟手。

1)顺序扫描性能 - LRU

LRU 总体上表现良好,但在一组页面 S(其中 $|S| >$ 缓冲池大小)被多次重复访问时,性能会受到影响。这种访问模式称为顺序淹没,经常在数据库工作负载中出现,比如在表中扫描每个记录。

为了突显这一点,请考虑一个使用 LRU 的 3 帧缓冲池,具有以下访问模式:

A B C D A B C D A B C D A B C D

5、最近最常使用替换策略(MRU Replacement)

另一个常用的替换策略是 MRU(最近最常使用)。与淘汰最近最少使用的未固定页不同,MRU 策略淘汰最近最常使用的未固定页,根据页面的固定计数最后一次减少的时间来衡量。

1)Sequential Scanning Performance - MRU

起初使用这种策略可能会显得违反直觉,但考虑一个使用 MRU 的 3 帧缓冲池的访问模式:

A B C D A B C D A B C D A B C D

显然,在发生顺序淹没访问模式时,MRU 在页面命中率方面远远优于 LRU。

6、练习题

1)判断真假

a. 缓冲池中的每个帧都是一个磁盘页面的大小。

真。帧的大小被定义为磁盘页面的大小。

b. 缓冲管理器代码(而不是文件/索引管理代码)负责设置页面的脏位。

假。页面的请求者(文件/索引管理代码)设置脏页。

c. 脏位用于跟踪页面的受欢迎程度。

假。脏位用于跟踪页面在写回磁盘之前是否已被修改。引用计数用于跟踪受欢迎程度。

d. 使用LRU策略时,引用位用于在替换页面之前为页面提供“第二次机会”留在内存中。

假。引用位不用于LRU策略。它们用于时钟策略。

e. 对文件进行顺序扫描时,当文件小于缓冲池时,使用MRU或LRU将具有相同的命中率(从空缓冲池开始)。

真。由于我们可以将所有页面放入内存,因此在顺序扫描期间我们不需要驱逐页面。

f. 页面的引用计数只能由缓冲管理器递减。

假。引用计数由请求页面的人递减,表示他们已经使用完毕。

2)LRU、MRU、Clock相关问题

对于以下问题,我们有一个初始为空的缓冲池,其中有4个缓冲帧。对于访问模式:

A B D D E A E C A B C A E

a. LRU的命中率是多少?

b. 当LRU完成时,缓冲池中有哪些页面?

c. MRU的命中率是多少?

d. 当MRU完成时,缓冲池中有哪些页面?

e. Clock的命中率是多少?

f. 当Clock完成时,缓冲池中有哪些页面?

详细的访问模式如下图所示。在 LRU 和 MRU 中,行数对应于缓冲帧的数量,每列对应于一个单独的访问,其中字符表示缺失,星号表示命中。

a. 7/13

b. A, C, B, E

c. 7/13

d. E, B, D, C

e. 6/13

f. C, A, B, E

以上,DBS note4:Buffer Management

祝好。

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

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

相关文章

HCIP-十、BGP基础

十、BGP基础 实验拓扑实验需求及解法1.R1 属于 AS100,R2/3/4 属于 AS200,R5 属于 AS3002.AS200 内运行 OSPF3.建立 IBGP 邻居4.建立 EBGP 邻居5.BGP 发布路由6.路由黑洞 实验拓扑 实验需求及解法 本实验模拟 ISP 网络拓扑,运行 BGP。如图所示…

python中模块的创建及引用(import as,import,from)

模块(module)简介: 1.模块化,模块化指将一个完整的程序分解为一个一个的小模块, 通过将模块组合,来搭建出一个完整的程序 2.不采用模块化就是统一将所有的代码编写到一个文件中,采用 模块化就是…

chrome driver 截图和填表

昨天突然有一个需求(自己的),想把某个网站题目主体部分翻译并保存成图片,开始时用了国内网站的翻译(人工、简单翻译),后来发现很多地方翻译的不尽人意,于是只好用翻译插件对原始网站…

【H5 Canvas】【平面几何】特殊图形绘制(【带旋转】箭头/正多边形/正多尖角形等)

文章目录 直线/弧线 箭头 直线/弧线 箭头 // startX,startY 起始坐标 // endX,endY 结束坐标 // radian 圆弧角度,取值[0,PI]; 0表示画直线箭头,否则画圆弧箭头 CanvasRenderingContext2D.prototype.drawArrow function(startX,startY,endX,endY,radia…

【Spring篇】spring核心——AOP面向切面编程

目录 想要彻底理解AOP,我觉得你的先要了解框架的模块化思想,为此先记录框架在讲AOP 什么是java框架?为什么要出现框架? 我总结以下七点来讲述和帮助理解java框架思想 什么是AOP? 如何理解上面这句话呢&#xff1…

HarmonyOS安装三方库遇到的问题

使用开发电脑系统为:MacOS, 开发工具为:DevEco-Studio版本号3.1.1 Release。在控制栏使用终端工具输入命令:ohpm install ohos/lottie遇到的第一个问题如下图。 解决方案: 1、在首选项中找到ohpm的安装路径。 2、打开bash_profil…

电子学会C/C++编程等级考试2022年06月(二级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:小白鼠再排队 N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白…

pyhon数据分析A股股票策略实际买卖总结(每月末更新数据)

简介 本篇文章主要记录python数据分析a股股票选股后实际买卖的记录。 选股策略 低位寻股&#xff0c;筛选出低位股价股票已经做过调整的股票&#xff0c;做短线交易&#xff08;不超过7天&#xff09;&#xff0c;不贪&#xff0c;小赚即走。分三个时段&#xff0c;开盘三十…

SSM企业风向管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 企业风向管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用B/…

决策树(第四周)

一、决策树基本原理 如下图所示&#xff0c;是一个用来辨别是否是猫的二分类器。输入值有三个&#xff08;x1&#xff0c;x2&#xff0c;x3&#xff09;&#xff08;耳朵形状&#xff0c;脸形状&#xff0c;胡须&#xff09;&#xff0c;其中x1{尖的&#xff0c;圆的}&#xf…

***利用SecureCRT上传、下载文件(使用sz与rz命令)

使用SecureCrt连接到服务器。 1、上传文件&#xff1a;rz命令 输入“rz”&#xff0c;回车&#xff0c;在弹窗的文件选择框中选择本地磁盘中需要上传的文件&#xff0c;点击【Add】按钮&#xff0c;再点击传输指令即可。 注意&#xff08;如果没有权限不可能成功&#xff0c;…

Runloop解析

RunLoop 前言 ​ 本文介绍RunLoop的概念&#xff0c;并使用swift和Objective-C来描述RunLoop机制。 简介 ​ RunLoop——运行循环&#xff08;死循环&#xff09;&#xff0c;它提供了一个事件循环机制在程序运行过程中处理各种事件&#xff0c;例如用户交互、网络请求、定…

ps5ps4游戏室如何计时?计费系统怎么查看游戏时间以及收费如何管理

ps5ps4游戏室如何计时&#xff1f;计费系统怎么查看游戏时间以及收费如何管理 1、ps5ps4游戏室如何计时&#xff1f; 下图以佳易王计时计费软件V17.9为例说明 在开始计时的时候&#xff0c;只需点 开始计时按钮&#xff0c;那么开台时间和使用的时间长度项目显示在屏幕上&am…

Pure-Pursuit 跟踪五次多项式轨迹

Pure-Pursuit 跟踪五次多项式轨迹 考虑双移线轨迹 X 轴方向位移较大&#xff0c;机械楼停车场长度无法满足 100 ~ 120 m&#xff0c;因此采用五次多项式进行轨迹规划&#xff0c;在轨迹跟踪部分也能水一些内容 调整 double_lane.cpp 为 ref_lane.cpp&#xff0c;结合 FrenetP…

基于 GPS 定位信息的 Pure-Pursuit 轨迹跟踪实车测试(1)

基于 GPS 定位信息的 Pure-Pursuit 轨迹跟踪实车测试&#xff08;1&#xff09; 进行了多组实验&#xff0c;包括顺逆时针转向&#xff0c;直线圆弧轨迹行驶&#xff0c;以及Pure-Pursuit 轨迹跟踪测试 代码修改 需要修改的代码并不多&#xff0c;主要对 gps_sensor 功能包和…

蓝桥杯每日一题2023.11.26

题目描述 奖券数目 - 蓝桥云课 (lanqiao.cn) 将每一个数字进行一一枚举&#xff0c;如果检查时不带有数字4则答案可以加1 #include<bits/stdc.h> using namespace std; int ans; bool check(int n) {while(n){if(n % 10 4)return false;n / 10; }return true; } int m…

基于Haclon的标签旋转项目案例

项目要求&#xff1a; 图为HALCON附图“25interleaved_exposure_04”&#xff0c;里面为旋转的二维码标签&#xff0c;请将其旋转到水平位置。 项目知识&#xff1a; 在HALCON中进行图像平移和旋转通常有以下步骤&#xff1a; &#xff08;1&#xff09;通过hom_mat2d_ident…

<JavaEE> Thread线程类 和 Thread的常用方法

目录 一、Thread概述 二、构造方法 三、常用方法 1.1 getId()、getName()、getState()、getPririty() 1.2 start() 1.3 isDaemon()、setDaemon() 1.4 isAlive() 1.5 currentThread() 1.6 Interrupt()、interrupted()、isInterrupted() 1.6.1 方法一&#xff1a;添加共…

基于Haclon的图形镜像案例

项目要求&#xff1a; 图为HALCON的例图“green-dot”&#xff0c;请将其中的圆形图案按水平和垂直两个方向分别进行镜像。 项目知识&#xff1a; 首先要用BLOB分析的方法&#xff0c;得到圆形图案的目标区域&#xff0c;再对其进行镜像。 在HALCON中与镜像相关的算子为mirr…

跟着chatgpt学习|1.spark入门

首先先让chatgpt帮我规划学习路径&#xff0c;使用Markdown格式返回&#xff0c;并转成思维导图的形式 目录 目录 1. 了解spark 1.1 Spark的概念 1.2 Spark的架构 1.3 Spark的基本功能 2.spark中的数据抽象和操作方式 2.1.RDD&#xff08;弹性分布式数据集&#xff09; 2…