2012-04-17 11 views
0

私は現在、人間の入力を待っているインスタンスが5000回あるWCFワークフローサービスを持っています。サービスがデータベースを更新する要求を受け取ると、永続性は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"/> 
を使用してワークフローサービスで行われます