何千ものファイルのバッチ処理のためにサーバー上で継続的に実行されているexeがあり、ファイルからのデータはすべてのファイルのデータベースに挿入され、同じ接続文字列が使用されています。パフォーマンスを向上させるために.net 4のTPLを利用しました。次のようなコードの基本的なフローは、接続プーリングについてあまり知らないため、次のアプローチで問題が発生する可能性があるため、提案してください。ありがとう。
フロー: 1. タスクの配列を作成します (50 個のファイルに対して約 50 個のタスク) 2. 各タスクを配列のタスクに追加します 3. すべてのタスクを待ち、次の 50 個のファイルに対して繰り返します
Task[] taskArry = new Task[50];
for (int i = 0; i < 50; i++)
{
taskArry[i]=(Task.Factory.StartNew(() => InstanceDataObject.InserData()));
//var t2 = Task.Factory.StartNew(() => InsertData());
}
Task.WaitAll(taskArry);
ここで重要な点は、InsertData() メソッドで各タスクの接続オブジェクトを開始していることです。各タスクはトランザクションで実行する必要があるため、50 のタスクに対して 50 の接続が作成されます。これはパフォーマンスに影響しますか?
internal static void InserData(string insPath, int filingId)
{
try
{
DataAccess dataAcess = new DataAccess(true);
// insert operation here
dataAcess.CommitTransaction();
}
finally
{
dataAcess.Dispose();
_dbmanager = null;
}
}
デフォルトの接続プーリングが接続文字列に対して有効になっているため、「Server=Test;User id=user;Password=@1234;database=test」のような接続文字列を使用しています。プーリングに関連するパラメーターを設定していません。Shall i have to set the parameter regarding connection pooling?
私のシナリオのために