和视图相关的主要是update和updall两个任务。updall默认是一天运行一次(凌晨2点启动),会重建所有db的视图索引。update是一直运行着的,它不断更新db的视图,此外update还负责更新db的全文索引。如果客户端打开视图慢,主要原因就是视图的索引不是最新的。update会维护一个队列,文档的改变会在这个队列排队,update会逐个更新索引。如果客户端打开视图慢,则可能是文档的修改比较频繁,update的队列比较长。
如果保持现有的硬件,Domino版本不变,我们可以设置一些参数来优化,如,可以将全文索引和视图索引分开,让全文索引单独起一个任务,在服务器端的notes.ini设置UPDATE_FULLTEXT_THREAD=1来实现;如果硬件的性能还有余地(平时Domino所占cpu,内存处于较低水平),可以设置起2个update任务,在notes.ini里设置UPDATERS=2可以完成,还可以设置UPDATE_IDLE_TIME=秒数来减少update任务定期检查队列的时间,默认是5秒。
如果现有的情况Domino已经占用很高的资源,能做的是简化视图的设计,去掉不必要的视图。有可能的话,升级Domino到更高版本。
当然效果最好的方式是升级硬件,并将Domino升至64位的高版本。举个实际的例子,IBM Lotus部门生产环境中有一台Domino服务器,原先的配置是4个CPU,3.06GHz, 共4个核,内存4G,操作系统是Windows 2003 32位。Domino版本为852 32bit, 服务器维护上百个NSF,其中,有4-5个超过50G,打开这些超大数据库的平均时间从几十秒到几分钟不等;现在升级为2个CPU,3.33GHz,共24个核,内存44G,操作系统是Windows 2008 64位。Domino版本升级为64bit,打开同样的数据库和视图,绝大多数时候耗时都在十秒之内。
另,在domino console上输入show stat update
看Update.PendingList参数就可以获得当前队列的长度。