当前位置:文档之家› 数据存储——缓冲区管理

数据存储——缓冲区管理


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