数据库的存储原理

1. 数据存取

在数据库管理系统中,数据的存取过程为:

  1. 应用程序通过 DML 向 DBMS 发出存取请求,如 SELECT 语句;
  2. 对命令进行语法检查,正确后检查语义和用户权限(通过数据字典 DD),并决定是否接收;
  3. 执行查询优化,将命令转换成一串单记录的存取操作序列;
  4. 执行存取操作序列;
  5. 在缓冲区中找记录,若找到转 10,否则转 6;
  6. 查看存储模式,决定从哪一个文件,用什么方式读取物理记录;
  7. 根据 6 的结果向操作系统(OS)发出读取记录的命令;
  8. OS 执行该命令,并读取记录数据;
  9. 在 OS 控制下,将读出的记录送入系统缓冲区;
  10. RDBMS 根据查询命令和 DD 的内容到处用户所要读取的记录格式;
  11. RDBMS 将数据从系统缓冲区中送入用户工作区;
  12. RDBMS 将执行状态信息(成功或失败)返回给应用程序;
  13. 应用程序对工作区中读出的数据进行相应处理。

2. 数据库的存储

数据库用文件的方式来存储数据。文件在逻辑上可看作是记录的序列,物理上这些记录被映射到磁盘块中。

数据删除的处理

当一条记录被删除时,可以把紧跟其后的记录移到被删记录的位置,以此类推,直到被删记录后面的每一条记录都向前做了移动。

但这种方法需要移动大量的记录,并不理想。所以可以暂时让被删除记录的空间一直空着,等待随后插入的记录使用这个空间。但仅在被删记录上做一个删除标记是不够的,因为当插入操作执行时,要找到这个可用空间比较困难,解决方法是引入额外的结构。

在文件的开始处,分配一定数量的字节作为文件头,文件头中存储有关文件的各种信息,也记录了第一条被删除的记录。再在第一条被删除记录的后面记录第二条被删除记录,这样就形成了一条链表,称为空闲链表。

数据的存储方法

文件中存储记录的常用方法有:堆文件组织,顺序文件组织,多表聚集文件组织,B+ 树文件组织和散列文件组织(后两种多用于索引记录)等。

1. 堆文件组织

一条记录可以放在文件中的任何地方,只要那个地方有空间存放记录。也就是说,文件中的记录是没有顺序的,是堆积来的。

2. 顺序文件组织

顺序文件是为了高效地按某个搜索码值的顺序有序处理记录而设计的(搜索码是一个属性或属性集合,他不一定是主码甚至是超码)。为了快速地按搜索码值得顺序获取记录,通常通过指针将文件块逻辑上有序地连接起来。每个文件块的指针指向搜索码值顺序的下一个文件块(链表形式)。同时,为了减少顺序文件处理中文件块的访问数量,在物理上按搜索码值的顺序或者尽可能的接近搜索码值的顺序存储文件块。

顺序文件组织对于那些按搜索码值有序的特定查询非常有效,然而在插入和删除记录时为了维护记录的物理顺序却十分困难。改进操作:

  • 插入操作:在文件中按搜索码值定位到待插入记录的文件块。
    • 如果文件块 A 中有空闲空间,就在该文件中定位插入记录的位置,并插入新的记录;
    • 否则申请一个溢出文件块,将文件块 A 中的记录平分一半到溢出文件块中,并将待插入记录插入到文件块 A 或溢出文件块中,再调整指针,使其能按搜索码值的顺序把文件块连接起来。
  • 删除操作:在文件中按搜索码值定位待删除记录所在的文件块。在文件块 A 中定位待删除记录并实施删除(需要在文件块内向前移动删除记录之后的原有记录,使文件块内的空闲空间位于块尾)。如果删除后记录太少,
    • 可考虑将文件块 A 的记录移到文件块所连接的文件块中,并释放 A 的空间。
    • 可考虑从文件块 A 所连接的文件块中移出一部分记录到 A 中。
3. 多表聚集文件组织

通常,在小型数据库管理系统中,每个关系的所有记录存储在一个单独的定长记录的文件中,这样可以充分利用操作系统所提供的文件系统功能,简化 DBMS 的设计。

然而,很多大型数据库管理系统在文件管理方面并不直接依赖操作系统,而是让操作系统分配给 DBMS 一个大的操作系统文件,DBMS 将所有关系存储在这个文件中,并且自己管理这个文件。

多表聚集文件组织是一种在每一个文件块中存储两个或多个关系的相关记录的文件结构。这种结构将多个关系的元组(行)混合在一起聚集存储,从而支持高效的连接运算。

例:

  • 当 Student 表和 Score 表根据 studentNo 进行连接运算时,DBMS 会将 Score 表中所有 studentNo 值相同的元组(行)聚集地存储在 Student 表中对应元组的附近。
  • 当读取 Student 表中的一个元组 t(行),包含元组 t 的整个文件块已经从磁盘中读取到主存储器中。由于 Score 关系中所有与元组 t 具有相同 studentNo 值得元组已聚集在元组 t 附近,所以已读入主存中包含元组 t 的文件块中也将包含 Score 表中与元组 t 相匹配的元组。
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL数据库存储原理基本上可以分为以下两个方面: 1. 数据库的物理存储结构 MySQL数据库的物理存储结构主要包括以下几个部分: - 数据库文件:MySQL将数据存储在磁盘上的文件中,每个数据库都对应一个或多个文件,文件的格式通常为frm、MYD和MYI等。其中,frm文件存储表的结构信息,MYD文件存储表数据,MYI文件存储表的索引信息。 - 表结构:MySQL将表的结构信息存储在frm文件中,包括表的列数、每列的数据类型、索引信息等。 - 表数据:MySQL将表的数据存储在MYD文件中,按照行的方式进行存储,每行记录的数据按照表结构中的列顺序进行存储。 - 索引数据:MySQL将表的索引信息存储在MYI文件中,用于加速查询操作。 2. 数据库的逻辑存储结构 MySQL数据库的逻辑存储结构主要包括以下几个部分: - 数据库数据库是一组相关联的表的集合,每个数据库都有一个唯一的名称,用于区分不同的数据库。 - 表:表是一组具有相同结构的数据的集合,每个表都有一个唯一的名称,用于区分不同的表。 - 列:列是表的基本组成部分,每个列都有一个唯一的名称,用于区分不同的列。每个列都有一个数据类型,用于指定列中存储的数据的类型。 - 行:行是表中的记录,每行记录包括一组数据,每个数据对应一个列。每行记录都有一个唯一的标识符,称为行号。 - 索引:索引是一种数据结构,用于加速查询操作。MySQL支持多种索引类型,包括B树索引、哈希索引等。 综上所述,MySQL数据库存储原理是基于物理存储结构和逻辑存储结构相互配合的,物理存储结构决定了数据在磁盘中的存储方式,而逻辑存储结构则决定了数据在数据库中的组织方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢慢编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值