📜  数据库缓冲区

📅  最后修改于: 2020-12-12 08:08:58             🧑  作者: Mango

数据库缓冲区

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

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

什么是缓冲管理器

  • 缓冲区管理器负责为缓冲区分配空间,以便将数据存储到缓冲区中。
  • 如果用户请求一个特定的块并且该块在缓冲区中可用,则缓冲区管理器在主存储器中提供该块地址。
  • 如果该块在缓冲区中不可用,则缓冲区管理器在缓冲区中分配该块。
  • 如果没有可用空间,则会从缓冲区中丢弃一些现有块,以为新块分配所需的空间。
  • 仅当在磁盘上进行写操作时,抛出的块才被最近修改,才将其写回磁盘。
  • 如果用户请求这些丢弃的块,则缓冲区管理器将从磁盘读取请求的块到缓冲区,然后将请求的块的地址传递给主存储器中的用户。
  • 但是,缓冲区管理器的内部操作对于可能在磁盘块请求中造成任何问题的程序不可见。缓冲区管理器就像一个虚拟机。

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

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