索引器任务:Update 和 Updall

Update 和 Updall 任务使视图索引和全文索引保持最新。

更新

缺省情况下在服务器启动时装入 Update,它持续不断地运行,检查其工作队列以查找需要更新的视图和文件夹。通过在执行的每个数据库更新操作之间等待 5 秒钟的方法,索引器只使用适度的系统资源。

Update 任务执行三种不同的更新任务:

  • Domino® 目录中更新视图。
  • 更新所有其他数据库中的视图。当请求更新某一视图时,只有自从上次更新以来至少有 20 次注释更改,并且在最近 7 天中已访问过该视图,才会更新该视图。视图更新服务可以在 Notes® 客户机上打开视图时提升视图访问速度。如果视图不经常更新,那么对用户或应用程序唯一的影响是降低视图打开速度,因为视图打开时会自动更新。
  • 更新全文索引。全文索引提供搜索最近添加的注释的能力。如果在最近的全文索引之后添加注释,则全文索引将找不到该注释。

Update 保持两个工作队列,一个即时队列,一个延迟队列。其他服务器组件,例如路由器和复制器,将请求投递给更改数据库的更新者。有些请求投递为延迟,有些请求投递为即时。

1. 全文索引更新(按更新频率)

更新频率

描述

每日

由 nightly Updall 任务执行。如果此 nightly 任务没有运行,则不执行每天的更新任务。

定时更新

由运行 Updall 的“程序”文档执行。必须将频率设置为“定时更新”,并创建合适的“程序”文档。也可以使用此方法,在不同时间更新不同的数据库。

每小时更新

由 chronos 任务触发,并且如果 update 任务正在运行,就由它来执行。如果 update 任务不在运行,则由 chronos 执行更新。如果 chronos 任务不在运行,则不运行更新。

立即

由 Update 任务执行。如果 Update 不在运行,则不运行更新。所有即时请求都按收到的要求进行处理。

延迟

延迟请求在处理之前保留 15 分钟。此时出现的对同一数据库的更新请求,将作为重复请求被忽略。

在将视图或文件夹更改记录在队列中时,Update 在更新数据库中的所有视图索引之前大约等待 15 分钟,以便更新可以包括在 15 分钟时间段内进行的任何其他数据库更改。在更新数据库中的视图索引之后,会更新将全文搜索索引设置为随时更新或每小时更新的所有数据库。

在 Update 遇到损坏的视图索引或全文索引时,它会尝试重建视图索引或全文索引以更正此问题。Update 将删除视图索引或全文索引并重建它。

要改进视图索引性能,并且如果服务器的 CPU 性能足够强大,您可以运行多个 Update 任务。

管理更新任务和系统资源的使用

如果服务器具有较低的更新速率,即服务器上很少进行更改,那么在服务器的缺省配置下,索引器也能保持更新速率。如果由于繁重的应用服务器使用、大量的电子邮件用户或大量的电子邮件,致使服务器具有较高的更新速率,那么缺省的资源使用配置可能造成更新者队列变大。如果确定更新队列过大,则确定在服务器上执行更新的方法。长队列通常表示视图和全文索引没有及时更新。

下面介绍某些示例方案和可能希望使用的实践经验,以及如何实施的具体步骤。

  • 方案 1 - 队列通常都很短,除非对于需要大量更新的数据库开始执行全文索引。出现这种情况时,视图更新请求将等待全文索引。这样会使队列不断变长,直到全文索引完成为止。要使用较少的系统资源来保持较短的队列,请用不同的线程执行视图更新和全文索引更新。为此,请在服务器的 NOTES.INI 文件中输入变量 UPDATE_FULLTEXT_THREAD=1
  • 方案 2 - 队列随时间缓慢增长从而变得太长,因为 Updater 任务得不到足够的系统资源使队列变短。要使用额外的资源使队列变短,请在每个 Update 操作之间设置延迟。要设置延迟,请在服务器的 NOTES.INI 文件中输入变量 UPDATE_IDLE_TIME(以及 FTUPDATE_IDLE_TIME,如果使用两个线程的话)。缺省情况下,延迟为 5 秒。要允许 Update 任务使用额外的系统资源,请将延迟设置为小于 5 秒。在大型服务器上可能需要更高的精度。在这种情况下,可以以毫秒为单位设置延迟(仅 Domino® 7 和更高版本),方法是向服务器的 NOTES.INI 文件添加变量 UPDATE_IDLE_TIME_MS(以及 FTUPDATE_IDLE_TIME_MS,如果使用两个线程的话)。
  • 方案 - 具有高更新速率的服务器经常需要太多的系统资源才能使队列保持较小状态。在这种情况下,可以决定根本不执行视图更新,只允许视图打开来自动执行更新。通过向服务器的 NOTES.INI 文件添加变量 UPDATE_DISABLE_VIEWS=1 禁用视图更新。另一个选项是限制全文数据库的立刻更新的数量。可以将数据库的更新频率更改为每小时、每天或指定的日程安排。也可以删除过多的全文索引。

    如果只允许在少量数据库上进行频繁的全文索引,同时阻止对其他数据库的全文索引,则在 Updater 中禁用全文索引,然后添加“程序”文档以安排 Updall 运行,例如,每半个小时(30 分钟)运行一次。要在 Updater 中禁用全文索引,请在服务器的 NOTES.INI 文件中输入变量 UPDATE_DISABLE_FULLTEXT=1

    可以完全阻止执行任何更新,只允许视图打开来自动执行视图更新。要阻止更新,请通过删除更新字符串,编辑 NOTES.INI 变量。

    如果系统拥有足够的系统资源来执行更新,则可以执行多个 Update 任务。要实现这一目的,请在 NOTES.INI 文件中编辑变量 ServerTasks,并添加第二个 Update 任务。

    可以调整该控件,来确定是否实际更新修改后的视图。数据库和视图必须依旧保持打开状态,但是如果没有达到这些阈值,则不更新此视图。

有关更多信息,请参阅 UPDATE_ACCESS_FREQUENCYUPDATE_NOTE_MINIMUM 以及其他 NOTES.INI 设置。

Updall

Updall 与 Update 类似,但它不是持续不断地运行,也不使用队列;而是根据需要运行。在运行 Updall 时您可以指定选项;但是如果不指定这些选项,则 Updall 会更新服务器上需要更新的任何视图索引或全文搜索索引。为节省磁盘空间,Updall 还从数据库中清除删除存根,并放弃已经 45 天未使用的视图的视图索引,除非数据库设计者为放弃视图索引指定了另一个条件。使用 NOTES.INI 设置 Default_Index_Lifetime_Days 可更改 Updall 放弃不使用的视图索引的时间。

与 Update 类似,Updall 对遇到的所有已损坏视图引和全文搜索索引执行重建操作。

缺省情况下,Updall 包括在 NOTES.INI 设置 ServerTasksAt2 中,因此它在每天凌晨 2 点运行。由于它清除删除存根并放弃不使用的视图索引,所以每天运行 Updall 有助于节省磁盘空间。此时,它还确保对设置为每天更新的所有全文搜索索引进行更新。

注: 当正在重建视图时,无论通过 Designer 任务,还是通过 Updall 任务,重建进程启动之后尝试过的所有新的服务器会话都被锁定。因此,建议对主模板的更改以及完整的视图重建,应当安排在深夜进行,因为那时很少有用户需要访问服务器。

下表对 Update 和 Updall 的特性进行了比较。对于 Updall,该表描述的是其缺省特性。您也可以使用 Updall 选项修改部分以下特性。

2. 比较 Update 和 Updall

特性

更新

Updall

何时运行

服务器启动后持续运行

凌晨 2 点和手动运行它的时候

是否在所有数据库上运行?

否。只在发生更改的数据库上运行。

是否刷新视图索引?

是否更新全文索引?

是。对设置为随时更新和每小时更新的全文索引进行更新。

是。更新所有全文索引。

是否检测并尝试重建损坏的视图索引?

是否检测并尝试重建损坏的全文索引?

是否清除删除存根?

是否放弃未使用的视图索引?

是(在视图 45 天没有使用后,或根据设计者指定的放弃视图选项)

是(在视图 45 天没有使用后,或根据设计者指定的放弃视图选项)

是否忽略“刷新索引”视图属性?

是否能够用选项定制?