第5章数据库存储技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• •
Redundant Arrays of Inexpensive Disks; 中文称为“廉价磁盘冗余阵列”。
现在的RAID
价格已经不是主要因素,而磁盘的性能(数据传输率) 和可靠性是考虑的主要内容,因此:
• •
Redundant Arrays of Independent Disks; 中文称为“独立磁盘冗余阵列”。
数据库技术及应用
第5章 数据库存储技术
1
本章知识点
物理存储介质 文件组织 文件中记录的组织 数据字典的存储 数据库中的索引 顺序索引 B+树索引文件
散列文件组织
散列索引 顺序索引和散列索引的比较
多码访问
小结
2
5.1 物理存储介质
5.1.1 三级存储体系 5.1.2 磁盘 5.1.3 RAID 5.1.1 第三级存储
实现冗余的第二种方法是存储奇偶校验位。
11
5.1.3 RAID
如何提高磁盘的性能
通过在多个磁盘上对数据进行拆分来提高传输率, 原因是可以对多个磁盘并行存取。 比特级拆分:
•
拆分的方法
数据拆分的最简单形式是将每个字节按比特位分开,存 储到多个磁盘上。
在块级拆分中,文件的块被拆分存储到多个磁盘上。如 果有n个磁盘,则文件的第i块被存储到第(i mod n) + 1个磁盘上。
具体地说,DBMS的文件管理器把数据看成是页的集 合,并且提供分配/回收页和读/写页的命令; 通常以磁盘块的大小作为页的大小,以便在一次磁 盘I/O中就能够完成一页的读/写。
17
5.2.1 定长记录
指数据库文件中所有的记录具有相同(固定)的长度。
首先考虑由有关student记录组成的一个文件。该文 件中的记录定义如下:
扇区 旋转
磁盘臂
6
5.1.2 磁盘
磁盘的物理特性
磁道:
•
盘片的表面被逻辑地划分为磁道。 磁道又被逻辑地划分为扇区; 扇区是从磁盘读出和写入数据的最小单位,通常大小为 512字节。 一个盘片的一条磁道内几个连续的扇区构成的序列称为物 理块,一般也简称块; 数据在磁盘和主存储器之间以块为单位传输。
Free Space Oracle允许记录跨 页存储,一个页 中也可以存储多 张表的数据
ROW DATA
33
5.2.3数据库与文件管理
在小型关系数据库管理系统中将各个关系存储在一个 个独立的文件中。通常:
文件中的记录都是定长的,文件结构简单; 充分利用了作为OS一部分的文件系统的好处。
大型数据库管理系统在文件管理方面并不直接依赖于 操作系统。操作系统只分配给DBMS一个大的操作系统 文件,所有关系都存储在这个大文件中。它的好处是 :
•
type student = record student_number: char(10); student_name: char(8); department_name: char(22); end
假设每个字符占一个字节,那么一个student记录占 40个字节。
18
5.2.1 定长记录
定长记录的存储
未来的RAID?真正的百年存储„„
10
5.1.3 RAID
如何提高磁盘的可靠性?
引入冗余是解决可靠性问题的有效方法:
•
存储一些通常情况下不需要的额外信息,这些信息 可在发生磁盘故障时用于重建丢失的信息。
实现冗余的方法
实现冗余最简单、但最昂贵的方法:
•
•
复制每一个磁盘,这种技术称为磁盘镜像或磁盘影 像; 一个逻辑上的磁盘由两个物理磁盘组成,并且每一 个写操作都要在两个磁盘上执行。
用文件的头40个字节存储第一个记录,接着的40个字 节存储第二个记录,依次类推„„ 这种结构的问题是:
删除一条记录时 要么填充被删空间 要么标记被删记录; 除非块的大小恰好 是40的倍数,否则 记录会跨块存储。
19
5.2.1 定长记录
定长记录的维护
方案一:
删除一条记录时,顺序移动其后的所有记录; 插入一条记录则始终在文件的尾部进行。 删除一条记录时,移动最后一条记录到此位置; 而插入一条记录则始终在文件的尾部进行。
4
日志
数据文 件
索引
统计数 据 数据字 典
5.1.1 物理存储介质
认识存储介质
成本与速度 随机存取
高速缓冲存 储器 主存储器 闪存 磁盘
一级存 储
顺序存取
联机与脱机 存储容量 存储易失性 磁带
二级存 储
光盘
三级存 储
5
5.1.2 磁盘
基本术语
转轴
磁道 盘片
柱面
读写头
磁 盘 臂 装 置
用于物理块内部的记录组织; 分槽页 块头部分: 结构的 块中记录个数; 实例? 块中空闲空间的末尾地址; 描述块中每个记录的大小和位置的数组; 块尾部分:实际记录从块的尾部开始连续存储; 块中部分:块中空闲空间是连续的。
25
5.2.2 变长记录
变长记录的存储
方法之二:分槽页结构的维护
23
5.2.2 变长记录
变长记录的存储
方法之一:字节流表示法
在每个记录的末尾都附加特殊的记录终止符⊥; 或者是在每个记录的开头存储该记录的长度。
问题:磁盘碎片 删除一条记录? 记录变长了? 记录变短了? 方案:移动记录的代价
24
5.2.2 变长记录
变长记录的存储
方法之二:分槽的页结构
有利于提高系统的性能; 空间的分配与管理简单、灵活,如簇集文件组织
34
5.2.3数据库与文件管理
SQL
SERVER 2000的数据库文件组织
在MS SQL Server 2000中,一个数据库是由三个操 作系统文件构成的,它们分别是:
• • •
主数据文件:*.MDF 次数据文件:*.NDF 日志文件:*.LDF
扇区:
• •
物理块:
7
5.1.2 磁盘
磁盘的块存取
磁盘的I/O请求指定了要存取的磁盘地址,这个地址是 以块号的形式提供的;页号与块号的对应 数据库的文件管理器将块地址转换成硬件层的柱面号 、盘面号和扇区号。
数据库缓冲区
数据库的文件管理器只负责将包含用户需要的数据所 在的块缓存到主存储器里的数据库缓冲区,或者执行 相反的操作; 当新的数据从磁盘到缓存时,根据缓冲区替换策略来 安排数据的位置。
方案二:
20
5.2.1 定长记录
定长记录的维护
方案三:
删除一条记录时,并不着急移动记录,而是将其加入空闲 记录列表; 当要插入记录时,使用空闲列表中的记录空间;若没有空 闲空间就插入到文件的尾部。
额外的结构: 文件头
指针列
21
5.2.1 定长记录
定长记录的数据页结构
记录的移动引起记录RID变化。如果有外部引用指向被 移动的记录,如索引,则这种机制就存在问题。
14
5.1.4第三级存储
传统上,光盘和磁带主要用于备份和归档数据,因 此它们一般都是离线(off-line)的存储介质; 随着数据的不断膨胀,数据越来越多,我们称之为 海量信息; 在当前,我们主要用光盘塔或磁带库来存储海量信 息,并且使它们变成近线(near-line)或在线(online)的存储介质。也就是说,跨过二级存储设备 在内存和光盘或磁带之间直接传输数据。
5.2.2 变长记录
变长记录的存储
方法之三:定长表示法
用一个或多个定长记录来表示一个变长记录。
由于所采用的策略不同,定长表示法又分为以下 几类:
• • •
方法之三(1)--保留空间法 方法之三(2)--指针法 方法之三(3)--锚块-溢出块表示法
定长表示法在实际的DBMS当中很少使用,为什么 ?但至少可以为我们解决其他问题开拓思路!
15
5.2 文件组织
5.2.1 定长记录 5.2.2 变长记录 5.2.3 数据库与文件管理
16
DBMS的高层(逻辑层和视图层)把数据看成是“记 录”(行)的集合,即将关系表中的元组映射成文件 的逻辑记录。数据库文件采用两种逻辑记录格式: 定长记录和变长记录格式存储。 DBMS的底层(物理层)在处理I/O问题时,把数据 看成是“页”的集合:
29
5.2.2 变长记录
变长记录的存储
方法之三(3):锚块-溢出块表示法
指针法的变形;文件使用两种不同的物理块: 锚块:包含记录的定长部分和变长部分的第一个分 量的块; 溢出块:包含记录的变长部分除第一个分量以外的 其他分量的块。
30
变长记录的数据页结构
删除 移动 适应性
5.2.2 变 长 记 录
这些信息都存放在SYSFILES系统表中
SQL
SERVER 2000的数据库文件管理
上述数据库文件的管理是由SQL Server自己负责的 ,而不是依赖于Windows的文件系统。 SQL Server 有自己的文件管理器。
35
3
DBMS总体结构回顾:磁盘存储器
用户
应用界 面
应用程 序
交互查 询
数据库模式
嵌入式DML 预编译器
DML编译 器
DDL解释 器
应用程序 目标码 性权 管限 理及 器完 整
查询计算引 擎
查 询 处 理 器 存 储 管 理 器
缓冲区管理器 事务管理器 文件管理器
数 据 库 管 理 系 统
磁盘 存储 器
27
5.2.2 变长记录
变长记录的存储
方法之三(1):保留空间法
•
•
假设所有的变长记录都不会超过某个长度,就为每个记录 都分配这样长度的空间; 缺陷:假设不合理;浪费大量存储空间
28
5.2.2 变长记录
变长记录的存储
方法之三(2):指针法
用一系列通过指针链接起来的定长记录来表示一个变长记 录; 优点:与定长记录类似,变长记录是一个链表; 缺点:引入额外结构,浪费存储空间。
32
Oracle的页格式:
Oracle的页大小可以设定,如2048或4096等
头部含通用的块信息, 如块地址和段类型(数 据段或索引段)
Hale Waihona Puke Baidu
Command and Variable Header
Table Directory
记录在本块有数据的表的信息
记录块中实际行的信息 (如每个行的地址等)
Row Directory
•
还 要 修 改 ?
•
•
删除一条记录: 它所占用的空间被释放; 块中在此之前的记录都要移动; 而空闲空间还是集中在块中间。 插入一条记录: 在块中空闲空间的尾部给这条记录分配空间。 记录的增长和缩短: 该条记录的末尾地址不变; 在此记录之前的记录都要移动; 块的大小有限制,移动记录的代价并不高。
26
8
5.1.2 磁盘
磁盘质量的度量标准
容量大小 存取时间:
• •
从发出读写请求到数据开始传输之间的时间; 存取时间 = 寻道时间 + 旋转等待时间。 从磁盘获得数据或者向磁盘存储数据的速率,即I/O吞吐 量。
数据传输率:
•
可靠性 性价比
9
5.1.3 RAID
早期的RAID
经济因素是主要原因,因此:
31
SQL
SERVER 2000的页
数据页是表的所有非 文本数据和文本数据 的存储结构; 数据页的固定大小为 8KB , 即 8192 字 节 , 其中8096字节用于存 储数据,其余的96字 节用于存储页结构信 息; 数据页由3个主要的 部分组成:它们是 „„
记录不能跨页存储,它的最大 长度是8060字节!
22
5.2.2 变长记录
变长记录
造成变长记录的原因:
多种记录类型在一个文件中存储; 记录类型允许一个或多个字段是变长的; 记录类型允许可重复的字段。
例如:
•
type course_list = record teacher_name: char(22); 定长部分 course_info: array[1..∞] of record course_name: char(30); 变长部分 course_capacity: int; end end
块级拆分:
•
12
5.1.3 RAID
RAID级别
镜像+拆分+奇偶校验构成了RAID的不同方案
13
5.1.3 RAID
如何正确选择RAID级别
由于RAID2和4被RAID3和5所包容,因此只需要在RAID0 、1、3、5和6之间作出选择:
• •
• •
•
RAID0:用于可容忍数据丢失的高性能应用; RAID1:用于存储类似数据库日志的应用,因为它提供了 最好的写性能,同时又保证可靠性; RAID3:用于存储大量数据,并提供高的数据传输率; RAID5:用于存储大量数据,且随机读的效率很高。大多 数数据库系统都属于这种情况; RAID6:提供比RAID5更高的可靠性,但很多RAID实现并不 支持RAID6。
Redundant Arrays of Inexpensive Disks; 中文称为“廉价磁盘冗余阵列”。
现在的RAID
价格已经不是主要因素,而磁盘的性能(数据传输率) 和可靠性是考虑的主要内容,因此:
• •
Redundant Arrays of Independent Disks; 中文称为“独立磁盘冗余阵列”。
数据库技术及应用
第5章 数据库存储技术
1
本章知识点
物理存储介质 文件组织 文件中记录的组织 数据字典的存储 数据库中的索引 顺序索引 B+树索引文件
散列文件组织
散列索引 顺序索引和散列索引的比较
多码访问
小结
2
5.1 物理存储介质
5.1.1 三级存储体系 5.1.2 磁盘 5.1.3 RAID 5.1.1 第三级存储
实现冗余的第二种方法是存储奇偶校验位。
11
5.1.3 RAID
如何提高磁盘的性能
通过在多个磁盘上对数据进行拆分来提高传输率, 原因是可以对多个磁盘并行存取。 比特级拆分:
•
拆分的方法
数据拆分的最简单形式是将每个字节按比特位分开,存 储到多个磁盘上。
在块级拆分中,文件的块被拆分存储到多个磁盘上。如 果有n个磁盘,则文件的第i块被存储到第(i mod n) + 1个磁盘上。
具体地说,DBMS的文件管理器把数据看成是页的集 合,并且提供分配/回收页和读/写页的命令; 通常以磁盘块的大小作为页的大小,以便在一次磁 盘I/O中就能够完成一页的读/写。
17
5.2.1 定长记录
指数据库文件中所有的记录具有相同(固定)的长度。
首先考虑由有关student记录组成的一个文件。该文 件中的记录定义如下:
扇区 旋转
磁盘臂
6
5.1.2 磁盘
磁盘的物理特性
磁道:
•
盘片的表面被逻辑地划分为磁道。 磁道又被逻辑地划分为扇区; 扇区是从磁盘读出和写入数据的最小单位,通常大小为 512字节。 一个盘片的一条磁道内几个连续的扇区构成的序列称为物 理块,一般也简称块; 数据在磁盘和主存储器之间以块为单位传输。
Free Space Oracle允许记录跨 页存储,一个页 中也可以存储多 张表的数据
ROW DATA
33
5.2.3数据库与文件管理
在小型关系数据库管理系统中将各个关系存储在一个 个独立的文件中。通常:
文件中的记录都是定长的,文件结构简单; 充分利用了作为OS一部分的文件系统的好处。
大型数据库管理系统在文件管理方面并不直接依赖于 操作系统。操作系统只分配给DBMS一个大的操作系统 文件,所有关系都存储在这个大文件中。它的好处是 :
•
type student = record student_number: char(10); student_name: char(8); department_name: char(22); end
假设每个字符占一个字节,那么一个student记录占 40个字节。
18
5.2.1 定长记录
定长记录的存储
未来的RAID?真正的百年存储„„
10
5.1.3 RAID
如何提高磁盘的可靠性?
引入冗余是解决可靠性问题的有效方法:
•
存储一些通常情况下不需要的额外信息,这些信息 可在发生磁盘故障时用于重建丢失的信息。
实现冗余的方法
实现冗余最简单、但最昂贵的方法:
•
•
复制每一个磁盘,这种技术称为磁盘镜像或磁盘影 像; 一个逻辑上的磁盘由两个物理磁盘组成,并且每一 个写操作都要在两个磁盘上执行。
用文件的头40个字节存储第一个记录,接着的40个字 节存储第二个记录,依次类推„„ 这种结构的问题是:
删除一条记录时 要么填充被删空间 要么标记被删记录; 除非块的大小恰好 是40的倍数,否则 记录会跨块存储。
19
5.2.1 定长记录
定长记录的维护
方案一:
删除一条记录时,顺序移动其后的所有记录; 插入一条记录则始终在文件的尾部进行。 删除一条记录时,移动最后一条记录到此位置; 而插入一条记录则始终在文件的尾部进行。
4
日志
数据文 件
索引
统计数 据 数据字 典
5.1.1 物理存储介质
认识存储介质
成本与速度 随机存取
高速缓冲存 储器 主存储器 闪存 磁盘
一级存 储
顺序存取
联机与脱机 存储容量 存储易失性 磁带
二级存 储
光盘
三级存 储
5
5.1.2 磁盘
基本术语
转轴
磁道 盘片
柱面
读写头
磁 盘 臂 装 置
用于物理块内部的记录组织; 分槽页 块头部分: 结构的 块中记录个数; 实例? 块中空闲空间的末尾地址; 描述块中每个记录的大小和位置的数组; 块尾部分:实际记录从块的尾部开始连续存储; 块中部分:块中空闲空间是连续的。
25
5.2.2 变长记录
变长记录的存储
方法之二:分槽页结构的维护
23
5.2.2 变长记录
变长记录的存储
方法之一:字节流表示法
在每个记录的末尾都附加特殊的记录终止符⊥; 或者是在每个记录的开头存储该记录的长度。
问题:磁盘碎片 删除一条记录? 记录变长了? 记录变短了? 方案:移动记录的代价
24
5.2.2 变长记录
变长记录的存储
方法之二:分槽的页结构
有利于提高系统的性能; 空间的分配与管理简单、灵活,如簇集文件组织
34
5.2.3数据库与文件管理
SQL
SERVER 2000的数据库文件组织
在MS SQL Server 2000中,一个数据库是由三个操 作系统文件构成的,它们分别是:
• • •
主数据文件:*.MDF 次数据文件:*.NDF 日志文件:*.LDF
扇区:
• •
物理块:
7
5.1.2 磁盘
磁盘的块存取
磁盘的I/O请求指定了要存取的磁盘地址,这个地址是 以块号的形式提供的;页号与块号的对应 数据库的文件管理器将块地址转换成硬件层的柱面号 、盘面号和扇区号。
数据库缓冲区
数据库的文件管理器只负责将包含用户需要的数据所 在的块缓存到主存储器里的数据库缓冲区,或者执行 相反的操作; 当新的数据从磁盘到缓存时,根据缓冲区替换策略来 安排数据的位置。
方案二:
20
5.2.1 定长记录
定长记录的维护
方案三:
删除一条记录时,并不着急移动记录,而是将其加入空闲 记录列表; 当要插入记录时,使用空闲列表中的记录空间;若没有空 闲空间就插入到文件的尾部。
额外的结构: 文件头
指针列
21
5.2.1 定长记录
定长记录的数据页结构
记录的移动引起记录RID变化。如果有外部引用指向被 移动的记录,如索引,则这种机制就存在问题。
14
5.1.4第三级存储
传统上,光盘和磁带主要用于备份和归档数据,因 此它们一般都是离线(off-line)的存储介质; 随着数据的不断膨胀,数据越来越多,我们称之为 海量信息; 在当前,我们主要用光盘塔或磁带库来存储海量信 息,并且使它们变成近线(near-line)或在线(online)的存储介质。也就是说,跨过二级存储设备 在内存和光盘或磁带之间直接传输数据。
5.2.2 变长记录
变长记录的存储
方法之三:定长表示法
用一个或多个定长记录来表示一个变长记录。
由于所采用的策略不同,定长表示法又分为以下 几类:
• • •
方法之三(1)--保留空间法 方法之三(2)--指针法 方法之三(3)--锚块-溢出块表示法
定长表示法在实际的DBMS当中很少使用,为什么 ?但至少可以为我们解决其他问题开拓思路!
15
5.2 文件组织
5.2.1 定长记录 5.2.2 变长记录 5.2.3 数据库与文件管理
16
DBMS的高层(逻辑层和视图层)把数据看成是“记 录”(行)的集合,即将关系表中的元组映射成文件 的逻辑记录。数据库文件采用两种逻辑记录格式: 定长记录和变长记录格式存储。 DBMS的底层(物理层)在处理I/O问题时,把数据 看成是“页”的集合:
29
5.2.2 变长记录
变长记录的存储
方法之三(3):锚块-溢出块表示法
指针法的变形;文件使用两种不同的物理块: 锚块:包含记录的定长部分和变长部分的第一个分 量的块; 溢出块:包含记录的变长部分除第一个分量以外的 其他分量的块。
30
变长记录的数据页结构
删除 移动 适应性
5.2.2 变 长 记 录
这些信息都存放在SYSFILES系统表中
SQL
SERVER 2000的数据库文件管理
上述数据库文件的管理是由SQL Server自己负责的 ,而不是依赖于Windows的文件系统。 SQL Server 有自己的文件管理器。
35
3
DBMS总体结构回顾:磁盘存储器
用户
应用界 面
应用程 序
交互查 询
数据库模式
嵌入式DML 预编译器
DML编译 器
DDL解释 器
应用程序 目标码 性权 管限 理及 器完 整
查询计算引 擎
查 询 处 理 器 存 储 管 理 器
缓冲区管理器 事务管理器 文件管理器
数 据 库 管 理 系 统
磁盘 存储 器
27
5.2.2 变长记录
变长记录的存储
方法之三(1):保留空间法
•
•
假设所有的变长记录都不会超过某个长度,就为每个记录 都分配这样长度的空间; 缺陷:假设不合理;浪费大量存储空间
28
5.2.2 变长记录
变长记录的存储
方法之三(2):指针法
用一系列通过指针链接起来的定长记录来表示一个变长记 录; 优点:与定长记录类似,变长记录是一个链表; 缺点:引入额外结构,浪费存储空间。
32
Oracle的页格式:
Oracle的页大小可以设定,如2048或4096等
头部含通用的块信息, 如块地址和段类型(数 据段或索引段)
Hale Waihona Puke Baidu
Command and Variable Header
Table Directory
记录在本块有数据的表的信息
记录块中实际行的信息 (如每个行的地址等)
Row Directory
•
还 要 修 改 ?
•
•
删除一条记录: 它所占用的空间被释放; 块中在此之前的记录都要移动; 而空闲空间还是集中在块中间。 插入一条记录: 在块中空闲空间的尾部给这条记录分配空间。 记录的增长和缩短: 该条记录的末尾地址不变; 在此记录之前的记录都要移动; 块的大小有限制,移动记录的代价并不高。
26
8
5.1.2 磁盘
磁盘质量的度量标准
容量大小 存取时间:
• •
从发出读写请求到数据开始传输之间的时间; 存取时间 = 寻道时间 + 旋转等待时间。 从磁盘获得数据或者向磁盘存储数据的速率,即I/O吞吐 量。
数据传输率:
•
可靠性 性价比
9
5.1.3 RAID
早期的RAID
经济因素是主要原因,因此:
31
SQL
SERVER 2000的页
数据页是表的所有非 文本数据和文本数据 的存储结构; 数据页的固定大小为 8KB , 即 8192 字 节 , 其中8096字节用于存 储数据,其余的96字 节用于存储页结构信 息; 数据页由3个主要的 部分组成:它们是 „„
记录不能跨页存储,它的最大 长度是8060字节!
22
5.2.2 变长记录
变长记录
造成变长记录的原因:
多种记录类型在一个文件中存储; 记录类型允许一个或多个字段是变长的; 记录类型允许可重复的字段。
例如:
•
type course_list = record teacher_name: char(22); 定长部分 course_info: array[1..∞] of record course_name: char(30); 变长部分 course_capacity: int; end end
块级拆分:
•
12
5.1.3 RAID
RAID级别
镜像+拆分+奇偶校验构成了RAID的不同方案
13
5.1.3 RAID
如何正确选择RAID级别
由于RAID2和4被RAID3和5所包容,因此只需要在RAID0 、1、3、5和6之间作出选择:
• •
• •
•
RAID0:用于可容忍数据丢失的高性能应用; RAID1:用于存储类似数据库日志的应用,因为它提供了 最好的写性能,同时又保证可靠性; RAID3:用于存储大量数据,并提供高的数据传输率; RAID5:用于存储大量数据,且随机读的效率很高。大多 数数据库系统都属于这种情况; RAID6:提供比RAID5更高的可靠性,但很多RAID实现并不 支持RAID6。