📅  最后修改于: 2020-12-12 08:05:26             🧑  作者: Mango
有多种方法可以将数据存储在数据库中。将数据存储在文件中就是其中之一。用户可以以有组织的方式将数据存储在文件中。这些文件在逻辑上按照记录序列进行组织,并永久驻留在磁盘上。每个文件分为固定长度的存储单元,称为Blocks 。这些块是存储分配以及数据传输的单位。尽管数据库中的默认块大小为4至8 KB,但是许多数据库允许在创建数据库实例时指定大小。
通常,记录大小小于块大小。但是,对于较大的数据项(例如图像),大小可能会有所不同。为了快速访问数据,要求一条完整的记录只能驻留在一个块中。它不应在一个或两个块之间部分划分。在RDBMS中,元组的大小在不同的关系中变化。因此,我们需要以多种长度来构造文件以实现记录。在文件组织中,有两种可能的方式来表示记录:
让我们详细讨论一下。
定长记录意味着设置长度并将记录存储到文件中。如果记录大小超过固定大小,它将被分成多个块。由于大小固定,因此发生以下两个问题:
但是,包括一定数量的字节是上述问题的解决方案。它被称为文件头。分配的文件头包含有关文件的各种信息,例如第一条记录的地址。第二条记录的地址存储在第一条记录中,依此类推。此过程类似于指针。在固定长度的记录中,插入和删除的方法很容易,因为删除的记录留下或释放的空间与插入新记录所需的空间完全相似。但是此过程无法存储可变长度的记录。
可变长度记录是大小不同的记录。它需要创建多个大小不同的块来存储它们。这些变长记录以下列方式保存在数据库系统中:
在可变长度记录中,存在以下两个问题:
因此,可变长度记录的表示可以分为两部分:
在块内存储变长记录会出现问题。因此,这些记录以块内的分页结构组织。在时隙页面结构中,每个块的开头都有一个标题。该标头包含以下信息:
插入和删除方法
可变长度记录以连续的方式驻留在块内。
当要插入新记录时,它将在可用空间的末尾获得位置。这是因为自由空间也是连续的。此外,标头用新插入的记录的大小和位置信息填充条目。
删除现有记录后,将释放空间,并且标题条目设置为删除。在删除之前,它将移动记录并占用该记录以创建可用空间。可用空间结尾获取更新。然后,所有可用空间再次在第一个记录和最后一个条目之间设置。
分页页面结构的主要技术是没有指针应直接指向记录。而是应指向包含其位置信息的标头条目。这将停止块内空间的碎片化,但支持指向记录的间接指针。