数据库学习笔记:第九章 存储数据:磁盘和文件

第九章

数据以磁盘块为单位存储在磁盘上。块分布于一张或多张盘片的同心环形磁道上。磁道可以在盘片的单面或双面上录制。

同一直径的所有磁道的集合称为柱面。

磁盘块的大小在磁盘初始化时可以被设置成扇区大小的倍数。

每一个记录的表面都有一个磁盘头阵列。读写一块时,磁头必须定位在块头位置。

不能并行读写的主要原因是很难保证所有磁头被精确定位在相应的磁道上。

磁盘控制器是磁盘驱动器与计算机的接口。

当数据被写到扇区时,需要计算校验和并存储在扇区上,当扇区上的数据被独处时,需要再次校验和。

寻道时间是用于移动磁头到达所需块所在的磁道的时间,旋转延迟是所需块旋转到磁头下的等待时间,它的平均时间是旋转半圈需要的时间,它通常小于寻道时间。传输时间是当磁头定位后实际读或写磁盘块的时间,,即磁盘旋转经过数据块的时间。

RPM =revolutions per minute 每分钟多少转

磁盘和主存之间数据传输的单位是块,如果只需要块上的某一项,也需要传输整个块。

磁盘阵列是把几个磁盘组织在一起的一种形式,以提高性能和改善存储系统的可靠性。

冗余用于改善可靠性,即可靠性是通过增加冗余信息而不是通过保存数据的简单拷贝来改善的。

数据划分用于提高性能,它把数据分布在多个磁盘上。

实现数据划分和冗余相结合的磁盘阵列称为独立磁盘冗余阵列,简称RAID

在数据划分中,数据被分成相等大小的段,并分布到多个磁盘上。段的大小被称为划分单位。数据段通常使用循环算法分布,如果磁盘阵列有D个磁盘,那么数据段i被写在i mod D磁盘上。

对于划分单位为1比特位的磁盘阵列来说,每个单位时间里阵列能处理请求的数量以及每个单个请求的平均响应时间与单个磁盘相似。

多数磁盘阵列都存储校验信息,在校验模式中,额外一个校验磁盘用于存放可以恢复阵列中任意一个磁盘故障的校验信息。

在RAID系统中,磁盘阵列被划分为不同的可靠组,可靠组由一组数据盘和校验盘组成。

磁盘空间管理支持作为数据单元的页的概念,并且提供分配和回收页及读/写页的命令:

磁盘空间管理器隐藏了底层硬件(和操作系统)的希捷,并允许高层软件把数据堪称是页的集合。

跟踪磁盘利用情况的一个方法是维护一个空闲块的列表,,当块被回收时,把它们放进空闲列表,以备将来使用。第二个方法是维护一个位图,其中的每一位对应一个磁盘块。

数据库磁盘空间管理器可以建立在OS文件之上。

用于确定哪些页被替换掉的策略称为替换策略replacement policy

缓冲区管理器是负责在必要时把页面从磁盘取到主存的软件层,它通过把缓冲区划分为页集来管理可获得的主存,这些页集通常称为缓冲池。缓冲池中的主存页称为帧,即存放页的槽。

除了缓冲池本身,缓冲区管理器还维护一些薄记信息和描述帧的两个变量: pin_count和dirty。pin_count记录存放在某个帧中的当前页已经被请求但还未释放的次数,即该页的当前用户数。布尔变量ditry表示页从磁盘读入缓冲池后是否已经被修改。

开始时,每个帧的pin_count为0,dirty为假,当页被请求时,缓冲区做如下工作:

(1)检查缓冲池是否包含被请求的页,如果缓冲池中有该页,则将该页的pin_count值增加,如果缓冲池中没有该页,缓冲区管理器将按如下步骤把缺页读入缓冲池中:

(a)     根据替换策略选择替换帧,并增加它的pin_count。

(b)     如果替换帧的dirty为真,把该帧存放的页写回磁盘。

(c)     把请求的页读入替换帧。

(2)把替换帧的地址返回给申请者。

缓冲区替换策略:

最近最少使用策略LRU(least recently used),它通过在缓冲区中管理一个指向pin-count为0的帧的指针队列来实现。当一个帧成为替换候选(pin-count为0)时,它被加入队列尾,替换时总是选择队列头的帧。

时钟:LRU的变体,使用current变量以环形顺序选择替换帧,为了近似LRU行为,每一个帧也有一个相关的referenced位,它在页的pin-count变为0时开始启动。

替换时选择current指向的帧,如果帧没有选择被替换,current将增加,而考虑下一个帧。如果current指向的帧的pin-count大于0,则它不能成为替换候选键,current增加计数。如果current指向的帧的referenced位已启动,时钟算法将关闭它并且增加current,这种方法使得一个最近引用页将不可能被替代。如果current帧的pin-count为0,并且 它的referenced位关闭,则其中的页将被替换。

9.5记录文件

页的链表:一种方法是把堆文件维护为页的双向链表。DBMS通过一个存于磁盘已知位置由<堆文件名, 首页地址>对构成的表来记录文件第一页的位置。文件的第一页称为首页。

缺点:当记录是变长记录时,文件中的所有页事实上都将存在于空闲空间链表上,因为每一页都可能至少有一些空闲字节。

页目录(page directory):构建页链表的另一种方法是

目录本身是一组页的集合,一个目录页可以有多个目录项,每一个目录项都指向堆文件的一页。

一个堆文件允许我们去遍历所有的记录:1.通过具体的rid,  2 通过顺序地浏览所有的记录

页格式:定长记录  变长记录

时间: 2024-10-03 14:03:55

数据库学习笔记:第九章 存储数据:磁盘和文件的相关文章

《Python基础教程(第二版)》学习笔记 -&gt; 第九章 魔法方法、属性和迭代器

准备工作 >>> class NewStyle(object): more_code_here >>> class OldStyle: more_code_here 在这两个类中,NewStyle是新式的类,OldStyle是旧式的类,如果文件以__metaclass__ = type 开始,那么两个类都是新式类. 构造方法 构造方法,当一个对象被创建后,会立即调用构造方法.Python中创建一个构造方法,只要把init方法的名字从简单的init修改成__init__

Java学习笔记—第九章 字符串String

第九章 字符串String Java中使用String类来创建一个字符串变量,字符串变量是类类型变量,是一个对象.声明字符串的语法格式如下:String s; 创建字符串:通过String类提供的构造方法可创建字符串,有以下几种方式: (1)创建字符串对象时直接赋值,例如: String s1 = "hello"; String s2 = new String("hello"); (2)由一个字符串创建另一个字符串,例如: String s1 = "hel

Android学习笔记—第九章 Activity的加载模式

第九章 Activity的加载模式 task:类似于栈,每次打开界面会创建一个task,然后将这开启的界面放入到该task中. (1)standard:默认模式 每次都会创建一个新的界面,将该界面加入task中 (2)singleTop:栈顶单实例模式 a. 如果目标Activity不存在,创建一个新的Activity,存入到task中 b. 如果目标Activity已经存在,并且处于栈顶,不会再创建新的Activity c. 如果目标Activity已经存在,但不处于栈顶,创建一个新的Acti

HTML5学习笔记之客户端存储数据方法:localStorage(),sessionStorage()

HTML5提供了两种在客户端存储数据的新方法: localStorage():没有时间限制的数据存储 sessionStorage():针对一个session的数据存储 下面的一个例子用localStroage()方法对用户访问页面的次数进行计数 <script type="text/javascript"> if(localStorage.pagecount) { localStorage.pagecount=Number(localStorage.pagecount)+

《DOM Scripting》学习笔记-——第九章 CSS-DOM

本章内容: 一.style属性 二.如何检索样式信息 三.如何改变样式 属性: 包含位置信息:parentNode , nextSibling , previousSibling , childNodes , firstChild , lastChild 包含元素本身信息:nodeType,nodeName 包含元素样式信息:style 举例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w

SQL必知必会 笔记 第九章 汇总数据

9.1聚集函数 聚集函数(aggregate function):运行在行组上,计算和返回单个值的函数. 9.1.1AVG()函数 AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值. SELECT AVG(prod_price) AS avg_price FROM Products WHERE vend_id = 'DLL01'; 只用于单个列:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出,为了获得多个列的平均值,必须使用多个AVG()函数. NULL值

JavaScript高级程序设计学习笔记第九章--客户端检测

1.能力检测:能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.(我的理解就是识别浏览器能做什么不能做什么) 2.怪癖检测:目标是识别浏览器的特殊行为.但与能力检测确认浏览器支持什么能力不同,怪癖检测是想要知道浏览器存在什么缺陷(“怪癖”也就是 bug). 3.用户代理检测:争议最大的一种客户端检测技术.用户代理检测通过检测用户代理字符串来确定实际使用的浏览器.在每一次 HTTP 请求过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过 JavaScript 的 naviga

matlab学习笔记第九章——变换

1.拉普拉斯变换:时间函数f(t)的拉普拉斯变换用下面的积分式定义: L {f(t)} = ??0∞f(t)e-stdt,我们通常把f(t)的拉普拉斯变换写F(s).在MATLAB计算拉普拉斯变换,我们要调用laplace(f(t)),它做的是符号计算. L (tn) = n!/sn+1 要计算拉普拉斯逆变换,我们输入ilaplace 2.一个函数f(t)的傅立叶变换被定义为: F(ω) = ??-∞∞f(t)e-iωtdt 在MATLAB中我们可以输入fourier命令计算一个函数的傅立叶变换

《metasploit渗透测试魔鬼训练营》学习笔记第九章--meterpreter

七.强大的meterpreter  7.1再探metasploit的攻击载荷模块     7.1.1典型的攻击载荷模块     metasploit涵盖了各大主流操作系统和平台,其中绝大部分是远程漏洞利用所使用的攻击载荷模块,功能一般是开启远程shell,远程执行命令.     metasploit支持用户将自己的shellcode导入框架中,只需将payload替换成自己的shellcode代码,修改一下描述等基础信息即可.     7.1.2使用攻击载荷模块     search 搜索,查询