在处理开始之前,所有页缓冲区都是空的,并且每个缓冲区都由某个 FLRU 队列的条目代表。这些缓冲区在 FLRU 队列中是平均分布的。要计算每个队列中的缓冲区的数目,请将缓冲区总数除以 LRU 队列数。缓冲区和 LRU 队列的数目是在 BUFFERPOOL 配置参数中指定的。
当需要用户线程来获取缓冲区时,数据库服务器将随机选择一个 FLRU 队列,并使用列表中最旧的或最近最少使用的条目。如果可以锁存最近最少使用的页,该页将从队列中除去。
如果 FLRU 队列已锁定并且不能锁存结束页,那么数据库服务器将随机选择另一个 FLRU 队列。
如果用户线程正在共享内存中搜索特定的页,那么将从存储在缓冲区表中的控制信息中获取该页的 LRU 队列的位置。
正在执行的线程在完成其工作后将释放缓冲区。如果该页已修改,那么缓冲区将放置在 MLRU 队列的最近最多使用的一端。如果已读取该页但未修改,那么缓冲区将返回到 FLRU 队列的最近最多使用的一端。有关如何监视 LRU 队列的信息,请参阅监视缓冲池活动。