文章目录

  • 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 定长记录

定长记录占用固定大小的存储空间,管理上比较简单,有两点需要注意:

  • 单条记录不能跨 存储,一个块上只能存储整数个记录;
  • 文件中的记录是连续存储的,在删除记录后,需要对剩余的记录进行整理,不然会出现大量零碎的空闲空间。

记录整理大体有两个方向:

  1. 移动填充: 当删除记录时,移动剩余的记录,使存储保持连续;可以把后续的记录往前移,使文件中存储的记录依然保持连续;也可以把最后一个移过来,填充删除的记录所在的位置。
  2. 空闲列表: 在文件头维护一个空闲列表,在删除记录时,将其所在的位置添加到空闲列表中,在下一个记录插入时再填充。

对定长记录文件的插入和删除是容易实现的,因为被删除记录留下的可用空间恰好是插入记录所需的空间。

2.2 变长记录

数据库文件中使用变长记录的场景:

  1. 多种记录类型在一个文件中存储;
  2. 允许一个或多个字段是变长的记录类型;
  3. 允许可重复字段的记录类型,例如数组或多重集合;

实现变长记录需要解决两个问题:

  1. 如何存取块中的记录:在块中如何存储变长记录,使得块中的记录可以轻松地抽取;
  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):

数据库系统概念:存储和文件结构相关推荐

  1. 《数据库系统概念》学习笔记——第十章 存储和文件结构

    目录 第十章 存储和文件结构 10.1 物理存储介质概述 10.2 磁盘和快闪存储器 10.2.1 磁盘的物理特性 10.2.2 磁盘性能的度量 10.2.3 磁盘块访问的优化 10.2.4 快闪存储 ...

  2. 数据库书籍-数据库系统概念(原书第6版)

    数据库书籍-数据库系统概念(原书第6版) 基本信息 原书名: Database System Concepts,Sixth Edition 原出版社: McGraw-Hill 作者: (美)Abrah ...

  3. 实体 联系 模型mysql_数据库系统概念读书笔记――实体-联系模型_MySQL

    bitsCN.com 数据库系统概念读书笔记--实体-联系模型 前言 为了重新回顾我写的消息系统架构,我需要重新读一下数据库系统概念的前三章,这里简单的做一个笔记,方便自己回顾 基本概念 实体-联系( ...

  4. 《数据库系统概念》一二章学习笔记

    书上的例子以及练习题都是用 Mysql 实现的,操作系统使用的 macOS.在使用 Mysql 遇到问题时,推荐查看官方文档 Mysql Reference Manual. 第一章 引言 第一章就是综 ...

  5. 《数据库系统概念》学习笔记——恢复系统

    数据库系统概念--恢复系统 恢复系统 故障分类 存储器 稳定存储器的实现 数据访问 恢复与原子性 日志记录 数据库修改 并发控制和恢复 事务提交 使用日志来重做和撤销事务 检查点 恢复算法 事务回滚 ...

  6. 《数据库系统概念》第一章:引言

    数据库(database):一个互相关联的数据的集合. 数据库管理系统(DataBase-Management System,DBMS):由数据库和一组用以访问这些数据的程序组成. 数据视图 数据抽象 ...

  7. 数据库系统概念原书第六版黑皮书第一章课后习题作业答案

    文章目录 1.8列出文件处理系统和DBMS之间的四个显著区别. 1.9 解释物理数据独立性的概念,以及它在数据库系统中的重要性. 1.10 列出数据库管理系统的五个职责.对每个职责,说明当它不能被履行 ...

  8. 数据库系统概念Ch1

    数据库系统概念 CH1 数据:Data,数据是描述人.物体和事件的原始事实. 数据库:DataBase,相关数据的综合集合构成数据库(DB). 数据库管理系统:DataBase-Management ...

  9. 【2022-06-05】【知识梳理】数据库系统概念 第一章 简介(docx)

    建议先修课程:数据结构.操作系统.计算机组成原理. 配套教材: Database System Concepts 7th Edition Abraham Silberschatz Henry F. K ...

  10. 《数据库系统概念》——实体-联系模型

    文章目录 一.引言 二.学习 1. 实体-联系模型 1.1. 实体集 1.2. 联系集 1.3. 属性 2. 约束 2.1. 映射基数 2.2. 参与约束 2.3. 码 2.4. 从实体集中删除冗余属 ...

最新文章

  1. 在 k8s 中使用 Kubevirt 运行管理 Windows 10 操作系统
  2. Oracle 基础练习
  3. Qtopia-2.2.0 的配置和交叉编译
  4. Python 文件读取与写入操作方法
  5. centos 7 构造iptables开放80port
  6. 【最常用】两种java中的占位符的使用
  7. 初来乍到,请多指教。
  8. 组合日期_为什么我的透视表没法按日期组合?
  9. Educational Codeforces Round 50: F. Relatively Prime Powers(莫比乌斯函数)
  10. linux如何复制文件夹到根目录,unix如何复制文件和文件夹目录
  11. JS动态添加HTML元素
  12. 原创 | 从土地财政到数据财政
  13. 联通光纤猫虚拟服务器设置,联通光猫连接无线路由器怎么设置?
  14. matlab画入射系数和透射系数,反射系数和透射系数.ppt
  15. win10服务器cpu占用过高,解决win10服务主机内存和cpu高占用的解决方法
  16. firefox插件推荐
  17. c语言全部题目及答案,C语言全部题目及答案
  18. [锐捷客户端]提示虚拟网卡加载失败解决办法 - macOS系统
  19. 4.15 使用渐变映射命令制作艺术效果 [原创Ps教程]
  20. 在oracle 中编写一个程序,用VC 开 发 基 于ORACLE 数 据 库 应 用 程 序 的 两 种 方 法...

热门文章

  1. 2022年人工智能指数报告(附PDF下载)
  2. 如何把极点五笔卸载干净
  3. 浅谈决策、管理与信息化的关系
  4. 文章原创度检测 api数据接口
  5. t - 分布的区间估计
  6. On Rate Distortion Optimization Using SSIM
  7. 祝贺嘉华集团获得汽车经销商集团信息化管理大奖
  8. python测试开发django-122.bootstrap模态框(modal)学习
  9. 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测
  10. 软件测试学Python:了解Python