数据存储——缓冲区管理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12
LRU(最近最少使用) (最近最少使用)
下面用Oracle 9iCache管理的 实际例子来说明 LRU算法在实际 系统中的应用。
State 3 State 0
MRU端 端
State 1 State 2
A
MRU端 端
…… …… …… ……
LRU端 端
LRU端 端
B A
MRU端 端
LRU端 端
C B A
23
希望大家批评指正! 希望大家批评指正! 谢谢大家! 谢谢大家!
24
3
缓冲区概述
缓冲区管理器:在必要时把页面从磁盘取到 主存的软件层。 一些概念: 缓冲池(Buffer Pool): 即页集,通过把缓 冲区划分为不同的缓冲池来进行管理。 帧(frame):缓冲池中的每页。 页:磁盘上读写信息的基本单位,大小相等 的片。经典的页大小值是4KB或8KB。
4
缓冲区管理结构
数据存储
——缓冲区管理 缓冲区管理
姓名:付田原 学号:2011020817 指导老师:陈梅老师
1、缓冲区概述 2、缓冲区管理 3、缓冲区替换策略 4、DBMS和操作系统缓冲区管理对比
2
缓冲区概述
缓冲区:主存储器中用于存储磁盘块的拷贝的 部分,由固定数目的缓冲块构成。 缓冲区设置目的:减少磁盘和主存储器之间传 输的块的数目。提高数据传输效率。 缓冲区管理器:负责缓冲区空间分配的子系统。
MRU端 端
右图中的表格是 Oracle中定义的
State m State n
M
MRU端 端 MRU端 端
x
x
……… …… … C B A
……
x
LRU端 端
1 LRU list表 表 3
LRU端 端
N M
x
C B
LRU端 端
FIFO(先进先出) (先进先出)
先进先出策略替换的是占用某一缓冲区时间最 长的页面,即最先进入的页面。 算法实现: 1、缓冲管源自文库器中保持一张时间表,记录各缓冲 区块的访问时间情况。 2、每个数据库访问请求有一个表项,只记录该 帧最初装入缓冲区的时间。
两种主要的缓冲区管理结构 1、缓冲区管理器直接控制主存。这种管理结构 在大多数关系型DBMS中使用。 2、缓冲区管理器在虚拟内存中分配缓冲区,并 由操作系统干预缓冲区分配。这种管理结构在 大多数“主存”DBMS和面向对象的DBMS中使 用。
5
缓冲区管理结构
读/写 写 请求 缓冲区
缓冲区 管理器
此图展示的是 关系型DBMS 关系型 的缓冲区管理 策略, 策略,即: 缓冲区管理器 直接控制主存, 直接控制主存, 相应内存访问 磁盘块的请求。
20
实际应用中的替换策略 实际应用中的替换策略
DBMS DB2 Sybase Informix Oracle Sql Server 所用策略 Clock LRU LRU Clock 缓冲区个数 允许有多个Buffer 允许有多个 Pool 允许有多个Buffer 允许有多个 Pool 单个Buffer Pool 单个 单个Buffer Pool 单个
当我们要进行调页时,先查看了是否有空闲的 帧,此时会做一个判断,如果有,那么下面的 执行是比较简单的。 那么如果当前Buffer Pool中没有空闲帧的时候, 我们该怎样决定替换掉哪一个帧呢???
这就要引出我们的缓冲区替换策略!
9
缓冲区替换策略 缓冲区替换策略 替换
选择不同的替换策略进行页面替换显然影响着数据库 的执行效率,现介绍集中比较主流的替换策略。 LRU:最近最少使用策略 FIFO:先进先出策略 Clock:“时钟”策略 系统控制
FIFO(先进先出) (先进先出)
State 0 State 1 State 2 State 3
A B A C B A M
x x
…… …… …… …… ……
…………
State m
C B A C B N
16
State n
M x
x
……
Clock(“时钟”策略) ( 时钟”策略)
该算法是LRU的一个常用的、有效的近似算法。 算法实现: 1、为每一个缓冲区设置一个标志位,该位的值 为1时表示该帧被访问过,该位为0时表示该位可 以被替换。 2、按照顺时针轮转的方式查看标志位,选择最 近的一个标志为0的帧进行页面替换。
17
Clock(“时钟”策略) ( 时钟”策略)
算法执行过程
18
Clock(“时钟”策略) ( 时钟”策略)
0 0 1 0
19
1 0 1 1
系统控制
该策略严格说不是一种替换算法,它是一种辅 助性的替换规则。 目的是防止完全利用LRU或FIFO这样的严格 策略所引起的错误。 这种技术的根本在于强行指定某些重要的帧一 直保留在内存中(把其变为“钉定”的块), 以防止其频繁的被替换,影响数据库系统的性 能。
14
FIFO(先进先出) (先进先出)
算法简述 当有数据库读写请求时,扫描缓冲池中的各个 帧,当发现Free frame时就把数据读入到该帧 中;但是如果遍寻之后没有发现空闲帧,则去 查找缓冲池,从中找出最先进入缓冲池的帧, 进行替换, 此算法的根本在于缓冲池优先保留进入缓冲池 时间较短的数据。
15
21
DBMS和操作系统的缓冲区管理 和操作系统的 和操作系统
相似点 1、操作系统的虚拟内存管理和数据库管理系统 的缓冲区管理都是为了提高系统的处理效率。 2、主要思想是必要时从磁盘读入数据页,并替 换掉主存中不再使用的页。
22
DBMS和操作系统的缓冲区管理 和操作系统的缓冲区管理
区别: 1、DBMS能够预测引用模式,从而实现对于下 面几个页请求的预读取,而操作系统的虚存管 理则不能预取页面。 2、DBMS需要强制写回数据,而OS的缓冲写 回一般通过记录写请求来实现,是推迟的写回。
6
缓冲区管理——缓冲池 缓冲池 缓冲区管理
高层代码的页请求 正在访问的Frame Dirty Frame Free Frame 已访问完且未被 修改的数据
如果所需的页不再Buffer Pool中且Buffer Pool已满 则用替换策略进行调度
缓冲池 示意图
7
缓 冲 区 管 理 流 程
8
思考和引出
10
LRU(最近最少使用) (最近最少使用)
最近最少使用策略是替换出最长时间没有读过 或写过的页面。 算法实现: 1、缓冲管理器中保持一张时间表,记录各缓冲 区块的访问时间情况。 2、每个数据库访问请求有一个表项,实时更新 最新的访问时间。
11
LRU(最近最少使用) (最近最少使用)
算法简述 当有数据库读写请求时,扫描缓冲池中的各个 帧,当发现Free frame时就把数据读入到该帧 中;但是如果遍寻之后没有发现空闲帧,则去 查找缓冲池,从中找出“较不常使用”的帧, 进行替换,然后将该帧的最新访问时间进行更 新。 此算法的根本就是缓冲区尽可能的先保留使用 者最常使用的数据。
相关文档
最新文档