通常必须为应用程序经常更新的每个磁盘都配置一个清除程序。但是,除此之外还必须考虑 LRU 队列的长度以及检查点的频率,如以下各段中所说明。
除了 LRU 队列数不够之外,另外一个影响页清除程序数是否跟得上清除的页数的因素是您是否分配了足够的页清除程序线程数。在一些队列 中,脏页的百分比可能超过指定给 lru_max_dirty 的 BUFFERPOOL 值,因为没有清除程序可用于清除这些队列。一段时间过后,页清除程序可能实在赶不上了,这时缓冲池将会比您在 lru_max_dirty 中指定的百分比还要脏。
例如,假设 CLEANERS 参数已设置为 8,以及将 LRU 队列数从 8 增加到 12。您不能指望性能会有多大的提升,因为 8 个清除程序现在必须共享清除额外的 4 个队列的工作。如果将 CLEANERS 的数值增加到 12,那么单个清除程序就可以更加有效地清除现在已缩短的队列中的每个队列。
将 CLEANERS 设置得太小会导致出现检查点时性能变差,因为页清除程序必须在检查点期间将所有已修改的页清空到磁盘。如果不配置足够数量的页清除程序,那么检查点会花费更长的时间,导致整体的性能变差。
有关更多信息,请参阅清空缓冲池缓冲区。