2012-04-17 51 views
0

我目前有一个WCF工作流服务,有5000个实例闲置等待人工输入。当服务接收到更新数据库的请求时,持久性需要5秒钟才能持久化到数据库。如果我只有500个实例,持续时间是按照timeToPersist = 0秒的瞬间。无论如何加快这一点?WF4持久性很慢

'<sqlWorkflowInstanceStore 
    connectionStringName="Request" 
    instanceCompletionAction="DeleteAll" 
    instanceLockedExceptionAction="BasicRetry" 
    instanceEncodingOption="GZip" 
    hostLockRenewalPeriod="00:00:05" 
    runnableInstancesDetectionPeriod="00:00:02" 
/> 
<workflowIdle 
    timeToUnload="00:00:00" 
    timeToPersist="00:00:00" /> 
<serviceThrottling maxConcurrentInstances="15"/>' 

回答

0

很容易记,以加快这
有等待时间从数据库中检索数据和反序列化的信息。尽量保持对象尽可能小
您还可以尝试创建自己的持久性提供者 - 例如将数据保存在内存中而不是数据库中。你可以使用缓存引擎,如nCache。
但创建持久性提供者很困难。

1

如果在工作流完成后删除工作流实例,那么这可能是需要时间的一个原因。

这是在工作流服务使用属性

<sqlWorkflowInstanceStore connectionStringName="SQLInstancing" 
          instanceCompletionAction="DeleteAll"/> 
完成