缓冲池页可能在使用中,也可能未被使用,并且可以是脏页或干净页。
已更改的页在被覆盖之前,始终会写入磁盘。除非需要空间,否则不会从缓冲池中自动除去已写入磁盘的已更改页。
在经过认真调整的系统中,通常由页清除程序代理程序将已更改的页(即脏页)写入磁盘。页清除程序代理程序作为后台进程执行 I/O,它们使应用程序能够更快地运行,这是因为,其代理程序可以执行实际的事务工作。页清除程序代理程序有时被称为异步页清除程序或异步缓冲区写程序,这是因为它们不与其他代理程序的工作协调进行,而只是在有需要时才工作。
为了提高需要执行大量更新操作的工作负载的性能,可以启用主动页清除功能,以使页清除程序在任何给定时刻选择要写哪些脏页时更为主动。当快照揭示有许多同步数据页或索引页写操作与异步数据页或索引页写操作相关时尤其如此。
图 1 举例说明页清除程序代理程序与数据库代理程序之间如何共享缓冲池管理工作。

如果将较多的页写入磁盘,那么系统崩溃后的数据库恢复速度将加快,这是因为数据库管理器可以从磁盘重建较多的缓冲池,而不必根据数据库日志文件回放事务。
logfilsiz * softmax / 100(以 4-KB 页计)
其中:要将恢复期间日志读取时间缩至最短,请使用数据库系统监视器来跟踪执行页清除的次数。如果尚未对数据库启用主动清除页功能,那么 pool_lsn_gap_clns(触发缓冲池日志空间清除程序次数)监视器元素将提供此信息。如果已启用主动页清除页功能,那么应该不会发生这种情况,并且 pool_lsn_gap_clns 的值为 0。
可以使用 log_held_by_dirty_pages 监视器元素来确定是否页清除程序未清除足够多的页数,因此无法满足用户设置的恢复条件。如果 log_held_by_dirty_pages 始终明显大于 logfilsiz * softmax,那么需要提供更多页清除程序或者调整 softmax。