数据库系统概念:存储和文件结构
文章目录
- 1、基本概念
- 2、文件组织
- 2.1 定长记录
- 2.2 变长记录
- 2.3 文件中记录的组织
- 3 缓冲区
1、基本概念
1、内存数据库与磁盘数据库的特征比较
内存数据库 | 磁盘数据库 | |
---|---|---|
存取时间 | 10−810^{-8}10−8s 量级 | 10−310^{-3}10−3s 量级 |
数据存储 | 不需要连续存储 | 连续存储 |
缓冲管理 | 不需要 | 需要 |
索引结构 | 哈希,AVL树,T树,B树 | B树,B+树,Hash |
并发控制 | 大粒度锁 | 细粒度锁加锁,解锁,死锁检测 |
查询优化 | 基于处理器代价以及 cache 代价 | 基于 I/O 代价 |
2、LRU: Least Recently Used,该算法的设计原则是,如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小,也就是说,当限定的空间已经存满数据时,应当把最久没有被访问到的数据淘汰。
2、文件组织
一个数据库被映射到多个不同的文件,这些文件由底层的操作系统来维护。文件在逻辑上是数据记录的集合,文件的结构取决于所属的文件系统。
块(block) 是数据在文件中存储和读取的基本单元,其大小固定,大多数数据库默认使用 4~8KB 的块大小,在创建数据库实例时,有些数据库允许指定块的大小,要根据数据的特征来决定多个的块更合理。
一个块可能包含多条记录,对于大数据,比如图片,视频等,比块要大得多,需要单独存储,并在记录中保存指向大数据的指针。
每条记录都存储在相同的块中,不能一部分在 A 块中,另一部分在 B 块中,这样的设计能简化并加速数据访问。
关系型数据库中,不同表的记录通常具有不同的大小,这时数据库可以选择映射到多个文件中,同一文件中只存储固定长度的记录;也可以构建特殊的文件,支持容纳不定长度的记录。很显然,后者实现起来更复杂。
2.1 定长记录
定长记录占用固定大小的存储空间,管理上比较简单,有两点需要注意:
- 单条记录不能跨
块
存储,一个块上只能存储整数个记录; - 文件中的记录是连续存储的,在删除记录后,需要对剩余的记录进行整理,不然会出现大量零碎的空闲空间。
记录整理大体有两个方向:
- 移动填充: 当删除记录时,移动剩余的记录,使存储保持连续;可以把后续的记录往前移,使文件中存储的记录依然保持连续;也可以把最后一个移过来,填充删除的记录所在的位置。
- 空闲列表: 在文件头维护一个空闲列表,在删除记录时,将其所在的位置添加到空闲列表中,在下一个记录插入时再填充。
对定长记录文件的插入和删除是容易实现的,因为被删除记录留下的可用空间恰好是插入记录所需的空间。
2.2 变长记录
数据库文件中使用变长记录的场景:
- 多种记录类型在一个文件中存储;
- 允许一个或多个字段是变长的记录类型;
- 允许可重复字段的记录类型,例如数组或多重集合;
实现变长记录需要解决两个问题:
- 如何存取块中的记录:在块中如何存储变长记录,使得块中的记录可以轻松地抽取;
- 如何存取记录中的属性:如何描述一条记录,使得单个属性可以轻松地抽取;
.
1、下面是一条变长记录,它包含了四个部分;
空值位图用来表示记录中的按个属性是空值,0000
表示四个属性都不为空,0010
表示第三个属性的值为空。这里需要注意,空值位图之前的部分为记录的 定长部分
,无论哪个属性为空,这个结构的大小从始至终都是不变的,当某个属性为空值时,只表明可以忽略其所对应的定长部分
对应的值。
也有一些设计中,空值位图存储在记录的开头,并且对空属性不存储数据(值或偏移量/长度),这种方式是典型的 时间换空间
设计,对于稀疏型记录比较有效。
2、分槽的页结构(slotted-page structure)一般用于在块中组织记录:
分槽页结构
是 变长记录
的存储管理技术中的一种,用于在块中组织记录。
每个块的开始处有一个块头,块头中包含的信息有:
- 块头中已经存储的记录的条目个数;
- 块中空闲空间的末尾地址;
- 条目数组,每个条目中存储了该条目所对应变长记录的大小和地址;
记录在块中是从后往前连续存储的,空闲空间
处于块头
和记录
之间,当插入新的记录时,记录的(大小,位置)
对应的entry
添加到块头的末尾,记录本身的值添加空闲空间的末尾。
2.3 文件中记录的组织
文件中记录组织的几种方式:
- 堆文件组织(heap file organization):一条记录可以放在文件中的任何地方,只要那个地方有空间存放这条记录,记录是没有顺序的,通常每个关系使用一个单独的文件。
- 顺序文件组织(sequential file organization):记录根据其
search key
的值顺序存储。 - 散列文件组织(hashing file organization): 在每条记录的某些属性上计算一个散列函数,散列的结果确定了记录应放到文件的哪个块中。
通常,每个关系的记录用一个单独的文件存储,但是在多表聚簇文件组织(multitable clustering file organization)中,几个不同关系的记录存储在同一个文件中,而且,不同关系的相关记录存储在相同的块中,这样一个 I/O 操作可以从所有关系中取到相关的记录。
3 缓冲区
- 缓冲区替换策略(buffer replacement strategy):当缓冲区中没有剩余空间时,在新块读入缓冲区之前,必须把一个块从缓冲区中移出,多数操作系统使用 LRU 策略;
- 被钉住的块(pinned block):为了使数据库系统能够从系统崩溃中恢复,限制一个块写回磁盘的时间是十分必要的。
- 块的强制写出(forced output of block):
数据库系统概念:存储和文件结构相关推荐
- 《数据库系统概念》学习笔记——第十章 存储和文件结构
目录 第十章 存储和文件结构 10.1 物理存储介质概述 10.2 磁盘和快闪存储器 10.2.1 磁盘的物理特性 10.2.2 磁盘性能的度量 10.2.3 磁盘块访问的优化 10.2.4 快闪存储 ...
- 数据库书籍-数据库系统概念(原书第6版)
数据库书籍-数据库系统概念(原书第6版) 基本信息 原书名: Database System Concepts,Sixth Edition 原出版社: McGraw-Hill 作者: (美)Abrah ...
- 实体 联系 模型mysql_数据库系统概念读书笔记――实体-联系模型_MySQL
bitsCN.com 数据库系统概念读书笔记--实体-联系模型 前言 为了重新回顾我写的消息系统架构,我需要重新读一下数据库系统概念的前三章,这里简单的做一个笔记,方便自己回顾 基本概念 实体-联系( ...
- 《数据库系统概念》一二章学习笔记
书上的例子以及练习题都是用 Mysql 实现的,操作系统使用的 macOS.在使用 Mysql 遇到问题时,推荐查看官方文档 Mysql Reference Manual. 第一章 引言 第一章就是综 ...
- 《数据库系统概念》学习笔记——恢复系统
数据库系统概念--恢复系统 恢复系统 故障分类 存储器 稳定存储器的实现 数据访问 恢复与原子性 日志记录 数据库修改 并发控制和恢复 事务提交 使用日志来重做和撤销事务 检查点 恢复算法 事务回滚 ...
- 《数据库系统概念》第一章:引言
数据库(database):一个互相关联的数据的集合. 数据库管理系统(DataBase-Management System,DBMS):由数据库和一组用以访问这些数据的程序组成. 数据视图 数据抽象 ...
- 数据库系统概念原书第六版黑皮书第一章课后习题作业答案
文章目录 1.8列出文件处理系统和DBMS之间的四个显著区别. 1.9 解释物理数据独立性的概念,以及它在数据库系统中的重要性. 1.10 列出数据库管理系统的五个职责.对每个职责,说明当它不能被履行 ...
- 数据库系统概念Ch1
数据库系统概念 CH1 数据:Data,数据是描述人.物体和事件的原始事实. 数据库:DataBase,相关数据的综合集合构成数据库(DB). 数据库管理系统:DataBase-Management ...
- 【2022-06-05】【知识梳理】数据库系统概念 第一章 简介(docx)
建议先修课程:数据结构.操作系统.计算机组成原理. 配套教材: Database System Concepts 7th Edition Abraham Silberschatz Henry F. K ...
- 《数据库系统概念》——实体-联系模型
文章目录 一.引言 二.学习 1. 实体-联系模型 1.1. 实体集 1.2. 联系集 1.3. 属性 2. 约束 2.1. 映射基数 2.2. 参与约束 2.3. 码 2.4. 从实体集中删除冗余属 ...
最新文章
- 在 k8s 中使用 Kubevirt 运行管理 Windows 10 操作系统
- Oracle 基础练习
- Qtopia-2.2.0 的配置和交叉编译
- Python 文件读取与写入操作方法
- centos 7 构造iptables开放80port
- 【最常用】两种java中的占位符的使用
- 初来乍到,请多指教。
- 组合日期_为什么我的透视表没法按日期组合?
- Educational Codeforces Round 50: F. Relatively Prime Powers(莫比乌斯函数)
- linux如何复制文件夹到根目录,unix如何复制文件和文件夹目录
- JS动态添加HTML元素
- 原创 | 从土地财政到数据财政
- 联通光纤猫虚拟服务器设置,联通光猫连接无线路由器怎么设置?
- matlab画入射系数和透射系数,反射系数和透射系数.ppt
- win10服务器cpu占用过高,解决win10服务主机内存和cpu高占用的解决方法
- firefox插件推荐
- c语言全部题目及答案,C语言全部题目及答案
- [锐捷客户端]提示虚拟网卡加载失败解决办法 - macOS系统
- 4.15 使用渐变映射命令制作艺术效果 [原创Ps教程]
- 在oracle 中编写一个程序,用VC 开 发 基 于ORACLE 数 据 库 应 用 程 序 的 两 种 方 法...