LRU 队列和缓冲池管理

在处理开始之前,所有页缓冲区都是空的,并且每个缓冲区都由某个 FLRU 队列的条目代表。这些缓冲区在 FLRU 队列中是平均分布的。要计算每个队列中的缓冲区的数目,请将缓冲区总数除以 LRU 队列数。缓冲区和 LRU 队列的数目是在 BUFFERPOOL 配置参数中指定的。

当需要用户线程来获取缓冲区时,数据库服务器将随机选择一个 FLRU 队列,并使用列表中最旧的或最近最少使用的条目。如果可以锁存最近最少使用的页,该页将从队列中除去。

如果 FLRU 队列已锁定并且不能锁存结束页,那么数据库服务器将随机选择另一个 FLRU 队列。

如果用户线程正在共享内存中搜索特定的页,那么将从存储在缓冲区表中的控制信息中获取该页的 LRU 队列的位置。

正在执行的线程在完成其工作后将释放缓冲区。如果该页已修改,那么缓冲区将放置在 MLRU 队列的最近最多使用的一端。如果已读取该页但未修改,那么缓冲区将返回到 FLRU 队列的最近最多使用的一端。有关如何监视 LRU 队列的信息,请参阅监视缓冲池活动