数据库系统文件与缓冲管理核心指南
在本章节中,我们讨论了数据库系统中文件和缓冲管理的基础知识,这些知识在MySQL等数据库管理系统中起到了核心作用。为了深入理解文件和缓冲管理,我们首先要关注的是文件管理器(FileManager)的概念及其重要性。文件管理器是事务处理系统中最重要的资源管理器之一。其主要目的是组织存储在持久性外部存储设备上的数据,以便它们能够被系统中的其他资源管理器和应用程序程序轻松处理。
在讨论文件管理器提供的抽象时,我们可以看到几个关键点:
-
设备独立性:文件管理器的一个重要功能是将各种外部存储设备抽象为简单的数据类型,这样就不需要直接与具体的物理存储设备打交道。
-
记录的读写支持:文件管理器支持对记录进行读取和写入等基本访问操作。
-
分配独立性:文件管理器为存储由客户端提出的数据对象提供自己的空间管理机制。
-
地址独立性:文件管理器为关联访问提供机制,例如SQL中的SELECT语句。
接下来,我们探讨了外部存储与主内存的对比。外部存储通常具有比主内存更大的容量,经济学上有优势,因为每字节的成本远低于内存。此外,外部存储能够持久存储大量数据,而主内存却是易失性的。但是,外部存储设备的速度要慢于主内存,因此,从外部存储到CPU的数据传输的成本(包括延迟和路径长度)要高于从主内存中加载数据的成本。此外,外部存储不能直接处理数据,数据必须首先转移到主内存中才能被处理。
存储层次结构部分讨论了外部存储被应用程序和资源管理器视为文件集合的抽象视图。从这个抽象视图出发,有三种结构不同的方法来将文件内容映射到主内存:
-
读写映射:这是一种简单的方法,其中文件数据被读取到内存的缓冲区中,并在处理完毕后写回磁盘。
-
内存映射文件:内存映射文件是另一种高级抽象,通过将文件的部分或全部内容映射到内存地址空间,允许程序像访问内存一样访问文件。
-
单层存储:这是将数据存储在单一层级上的方法,使得内存和磁盘之间的界限模糊,优化数据的存取。
局部性和缓存部分强调文件管理器并不知道哪些数据是活跃的,哪些是不活跃的。数据通常通过观察实际的引用模式来区分,并通过预取等策略来提高性能,这意味着把预期将来会用到的数据提前加载到内存中。