文章目录
标签: 数据库
DBMS系统概述
数据模型三要素
- 数据结构:描述系统的静态特性
- 数据本身
- 数据之间的联系
- 数据操作:描述系统的动态特性,对数据库中对象的实例允许执行的操作的集合,包括操作及操作规则
- 完整性约束:完整性规则的集合,规定数据库状态及状态变化所满足的条件,保证数据库的正确、有效、相容
DBMS的主要功能
- 持久存储:支持对非常大量的数据进行存储,这些数据独立于使用数据的任何处理程序而存在
- 访问接口:使得用户可以通过强有力的查询语言访问数据和使用灵活的操作方式修改数据
- 事务管理:支持对数据的并发存取,多个不同的事务同时对数据进行存取并避免同时的访问可能造成的不良后果
DBMS的运行过程
![](https://i-blog.csdnimg.cn/blog_migrate/b96a772a7f982c0a69ba66c50218edca.png)
- 用户向DBMS发出调用数据库数据的命令
- DBMS对命令进行语法检查、语义检查、存取权限检查,决定是否要执行该命令
- DBMS执行查询优化,把命令转化为一串串记录的存取操作序列
- 执行存取操作序列(反复执行以下各步直到结束)
- DBMS在缓冲区中查找记录,找到转10,没找到转6
- DBMS查看存储模式,决定从哪个文件存取哪个物理记录
- 根据6的结果,向操作系统发出读取记录的命令
- 操作系统执行读取数据的命令
- 操作系统将数据从数据库存储区送到系统缓冲区
- DBMS根据用户命令和数据字典的内容导出用户所要读取的数据格式
- DBMS将数据记录从系统缓冲区传送到用户工作区
- DBMS将执行状态信息返回给用户
辅助存储管理
概述
- 辅助存储负责管理的数据:包括目标数据、元数据、索引和日志等,这些数据保存在磁盘上。
- DBMS中改变了的数据必须写在非易失的磁盘上,才能认为改变的数据已成为数据库的一部分。
磁盘结构
磁盘结构
![](https://i-blog.csdnimg.cn/blog_migrate/bc8c5bcf0c42a06c445598cf9f175f9e.png)
磁盘容量
- 磁盘容量=盘面×磁道×扇区×字节×8位
- 一个磁道多少块=磁道容量/扇区容量
磁盘访问时间
- 寻道时间:将磁头组合定位在磁盘块所在磁道的磁面上所需要的时间
- 旋转延迟(旋转等待时间):寻道结束后,读写头到等待被存取的扇区所需要的时间
- 传输时间:磁盘控制器读取或写数据时,数据所在扇区和扇区间的空隙经过磁头
磁盘的延迟=寻道时间+旋转延迟+传输时间
磁盘块存取的优化方法
- 才主存中对块进行缓冲以减少块的读写次数
- 按柱面组织数据
- 使用多个磁盘
- 磁盘镜像、
假定一个磁盘的MTTF是100,000小时,修复时间是10小时,则镜像磁盘系统的MTTF是 100 , 00 0 2 100,000^2 100,0002/(210)=500 1 0 6 10^6 106小时,约为57000年
- 磁盘臂调度——电梯算法
- 利用非易失性RAM作为写缓冲
- 预读和双缓冲
- 日志磁盘
RAID:廉价磁盘冗余阵列
作用
- 概述:利用大量廉价磁盘进行磁盘组织的技术
- 价格上:大量廉价的磁盘比少量昂贵的大磁盘合算
- 性能上: 使用大量的磁盘可以提高数据的并行存取
- 可靠性上: 冗余数据可以放在多个磁盘上,因而一个磁盘的故障不会导致数据丢失
- 通过冗余提高可靠性
- 通过并行提高性能
- 通过在多个磁盘上对数据进行拆分来提高传输率
分类与优缺点
RAIDO
- 将多个磁盘并列起来成为一个大磁盘
- 优点:
- 速度最快
- 块级拆分且没有任何冗余
- 缺点:如果一个磁盘损坏所有的数据都会丢失
- 应用:用于高性能访问并且数据丢失不十分重要的应用场合
RAID1
- 带块级拆分的磁盘镜像
- 优点:
- 读性能好(是RAID0性能的两倍)
- 写性能是由写性能最差的磁盘决定(但是对比以后的RAID来说写的速度还是较快的)
- 可靠性很高
- 缺点:物理磁盘空间是逻辑磁盘空间的两倍
- 应用:用于类似于数据库系统中日志文件存储的应用场合
RAID2
- 按比特级拆分,具有内存风格的纠错码(ECC)
- 未被广泛应用,目前没有商业化产品
- 纠错码:内存中每个字节都有一个奇偶校验位与之相连,它记录这个字节中为1的比特位的总数是偶数(=0)还是奇数(=1),如果字节中有一位被破坏,则字节的ECC与存储的ECC就不会相匹配;通过ECC可以检测到所有的1位错误;通过更多的附加位,当数据遭到破坏时,还可以重建数据
RAID3
- 能够检测出一个扇区是否被正确的读出
- 优点
- 效果与RAID2一样,但是只有一个磁盘的额外开销
- 缺点:
- 恢复时间长
- 每个磁盘参与每个IO请求,每秒RAID3支持的IO数较少
RAID4
- 特点:块级拆分,在一个独立的磁盘上为其他N个磁盘上对应的块保留一个奇偶校验位
- 优点:
- 读取一个块只需要访问一个磁盘,RAID3需要访问所有的盘
- 所有的磁盘都可以并行地读,读取大量数据的操作有很高的传输率
- 缺点:
- 每个存取操作的传输率低,可以并行地执行多个读操作,因此产生较高的总的IO率
假定有4个数据盘和一个冗余盘
读数据:RAID3需要5次磁盘读操作;RAID4与从任何一个cip
写数据:RAID3需要3次磁盘读和两次磁盘写操作RAID4写数据需要两次磁盘读和两次磁盘写操作
RAID5(块交叉的分布奇偶校验)
- 将数据和奇偶效验位第一分不到所有的N+1磁盘上,对每个块一个磁盘存储奇偶校验位其余磁盘存储数据
- 奇偶校验块不能和这个块对应的数据存储在同一个磁盘上
- 优点:
- 包含了RAID4
- 在相同的成本上,RAID5提供了更好的读写性能
![](https://i-blog.csdnimg.cn/blog_migrate/32ad30be5a1c7a9ce5d7580675bd9437.png)
RAID6
- 类似RAID5,存储了额外的冗余信息
- 不使用奇偶校验位的方法,使用Reed-Solomon码,对每4位数据存储两位冗余信息
- 优点:
- 可以容忍两个磁盘发生故障(高可靠性)
![](https://i-blog.csdnimg.cn/blog_migrate/438a5160b595a3b7fe13885c8345e9b6.png)
RAID分别使用的技术
- RAID 0级:块级拆分,无冗余
- RAID 1级:带块级拆分的磁盘镜像
- RAID 2级:内存风格的纠错码组织结构
- RAID 3级:位交叉的奇偶校验组织结构
- RAID 4级:块交叉的奇偶校验组织结构
- RAID 5级:块交叉的分布奇偶校验位的组织结构
- RAID 6级:P+Q冗余方案
选择RAID级别应该考虑的因素
- 所需的额外磁盘存储带来的开销
- 在IO操作数量方面的性能需求
- 磁盘故障时的性能
- 数据重建过程中的性能
缓冲区
- 概述:主存中用于存储磁盘块的拷贝的部分,由固定数目的缓冲块构成
- 目的:减少磁盘与主存之间传输的快的数目
- 缓冲区管理器:负责缓冲区空间分配的子系统
缓冲区管理工作流程
![](https://i-blog.csdnimg.cn/blog_migrate/9417460509e08aa054a647a29f03ddb5.png)
- 请求处理的流程
- 查看buffer pool是否包含此页,没有的则:
- 找到一个pin_count(正在访问该frame的事务的个数)为0的frame,pin_count++- 如果dirty为true,写入磁盘
- 将相应的页读入此frame
- 将frame的地址返回
存储组织
- 页的格式:
- 页是由一系列的记录构成的,每个记录为一个slot
- 记录的id为=(page id, slot number)
- 映射表:逻辑地址、物理地址
- 定长记录
- 每条记录的长度是固定的,没有变长字段,一个页存放的数量和位置也是确定的
- 变长记录
- 记录中包含变长字段,记录的长度是可变的,无法分配定长的slot
- 用slot字典存放记录的起始位置和记录的长度,用记录在slot字典中的位置代替slot的实际起始位置
文件中记录的组织
堆文件组织
- 概述:一条记录可以存放在文件中的任何地方,只要有空间存放这条记录,记录是无序的,通常一个关系是一个单独的文件
顺序文件组织
- 记录根据搜索码的值顺序存储
- 大量插删改后需要重组:当进行大量的插删改后,搜索码顺序和物理顺序之间的一致性最终将完全丧失,在这种情况下,顺序处理将变得效率十分低下,此时文件应该被重组,使得他在物理上顺序存放,这种重组的代价是很高,而且必须在系统负载很低的时候执行。需要重组的频率依赖于新记录插入的频率
散列文件组织
- 在每条记录的某些属性上计算一个散列函数,散列函数的结果确定了记录应该放到文件的哪个快中
聚簇文件组织
- 几个不同关系的记录存储在同一文件中(通常用一个文件存储一个关系的记录),甚至用不同关系中的相关记录存储在相同的块中,于是一个IO操作可以从多个关系中取到相关记录