数据库缓冲区

2024 年 8 月 28 日 | 3 分钟阅读

在我们上一节中,我们学习了各种类型的数据存储。但是,数据库系统的目标是磁盘和内存之间的传输次数最少。为此,它可以通过将尽可能多的块保留在主内存中来减少磁盘访问次数。这样,当用户想要存储数据时,可以直接在主内存中进行搜索,无需访问磁盘。然而,将如此多的块保留在主内存中是困难的;我们需要管理主内存中可用于存储块的空间分配。

数据库缓冲区是主内存中的一个临时存储区域。它允许在数据从一个地方移动到另一个地方时临时存储数据。数据库缓冲区存储磁盘块的副本。但是,磁盘上的块副本的版本可能比缓冲区中的版本旧。

什么是缓冲区管理器

  • 缓冲区管理器负责为缓冲区分配空间,以便将数据存储到缓冲区中。
  • 如果用户请求一个特定的块,并且该块在缓冲区中可用,缓冲区管理器将提供主内存中的块地址。
  • 如果块在缓冲区中不可用,缓冲区管理器将为该块在缓冲区中分配空间。
  • 如果空间不足,它会驱逐缓冲区中的一些现有块,以便为新块分配所需的空间。
  • 被驱逐的块仅在写入磁盘时被最近修改过的情况下才会写回磁盘。
  • 如果用户请求这样的被驱逐块,缓冲区管理器会将请求的块从磁盘读入缓冲区,然后将请求块的地址传递给主内存中的用户。
  • 然而,缓冲区管理器的内部操作对于可能导致磁盘块请求问题的程序是不可见的。缓冲区管理器就像一个虚拟机。

为了以最佳方式为数据库系统服务,缓冲区管理器使用以下方法:

  1. 缓冲区替换策略:如果缓冲区中没有剩余空间,则在分配新块之前需要从缓冲区中删除一个现有块。各种操作系统使用 LRU(最近最少使用)方案。在 LRU 中,最近最少使用的块会从缓冲区中删除并写回磁盘。这种类型的替换策略称为缓冲区替换策略。
  2. 固定块:如果用户希望从崩溃中恢复任何数据库系统,限制块写回磁盘的时间至关重要。事实上,大多数恢复系统不允许在块更新正在进行时将块写回磁盘。不允许写回磁盘的这类块称为固定块。幸运的是,许多操作系统不支持固定块。
  • 强制输出块:在某些情况下,即使缓冲区中块占用的空间不是必需的,也必须将块写回磁盘。当需要这种类型的写入时,它被称为块的强制输出。这是因为有时缓冲区中的数据可能会在系统崩溃时丢失,但磁盘上的数据通常不会因任何磁盘崩溃而受到影响。

下一主题估计查询成本