视表过滤器的并行处理

本产品使用Windows多线程功能来优化执行内部进程。
单个作业执行被视为单一进程。 在进程中每个定义的视表过滤器都各自的线程。
当所需的资源被完成时每个线程被并行处理。对于只有一个视表过滤器的作业,并行处理不被执行。
对于"标准VFa","标准VFb"的以下视表过滤器可以执行并行处理,并且执行为并行处理。 (若设置了执行优先级设置,可以使执行不为并行处理)。



另一方面,在以下如"标准VF1","标准VF2"的视表过滤器中,"标准VF2"只有当"标准VF1"输出视表"V2"时才能被开始。 所以,并行处理不能被执行。



若视表"V2"变为带数据通道连接器的视表,并行处理可以被执行。
尽管数据通道连接器作为一个普通视表出现,它把从临近视表中收到的记录传递给下一个视表。 以相同输出传递给下一个视表过滤器,但不执行磁盘的输出。 这时,在视表的全部记录输出完毕前,可以并行输出来保证每个记录单位数据的传递。
然而,即使使用数据通道连接器并执行排序处理,能够以记录单位进行传递的只是视表过滤器中所有进程的一部分,因此不能发挥并行处理效果。
有关使用其它数据通道连接器的预防项目,请参照使用数据通道连接器



在Windows与UNIX下,并行处理的表现与CPU的数目以及内存容量密切相关。
若CPU的数目很多,整个处理时间可以通过给每个进程分配一个单独的CPU的并行处理来缩短。 若由一个CPU生成大量线程, CPU处理时间被每个处理所共享。 除非通过磁盘输入输出与CPU处理交互来优化CPU处理时间,不然由于像CPU调度与临时内存的交换页等各种开销,进程处理可能被推迟。
同样地,当被并行处理的线程过多,临时需要存储容量便增大。 若在没有充足内存容量的情况下执行所有线程,可能会因为虚拟内存页交换中各种溢出,导致不能并行处理而使进程处理被推迟。 极端的来说,遇到内存页交换等各种溢出上花费大量时间,即被称之为"系统失效"的现象,在这种状态下,即使在执行上花费比原来执行净时间多几倍的时间,作业也可能无法结束。
通常为一个指定的作业估算CPU的大致数目与内存容量是很困难的。 因此在经常使用数据通道连接器或是通过可能竟可能的并行处理方式对可能并行执行的过滤器的多个进程进行操作时,事先在实际运行环境的Windows任务管理器中对CPU和内存的使用情况进行确认, 然后按照需要进行添加CPU或内存,或是把数据通道接器改成临时文件连接器,又或是设置视表过滤器中执行优先级设置,从而来限制同时可执行的视表过滤器数目。 当更改同时被执行的视表过滤器数目时,作业属性对话框排序内存大小的设置值的检查可能是必须的。