У меня есть exe, который работает на сервере непрерывно для пакетной обработки тысяч файлов, данные из файла вставляются в базу данных для всех файлов, в которых используется одна и та же строка соединения. Я использовал TPL для .net 4 для повышения производительности. Основной поток кода следующим образом, поскольку я не знаю много о пуле соединений, следующий подход приведет меня к неприятностям. Пожалуйста, предложите. Благодарю.Пул соединений с параллельной библиотекой задач в .NET 4
Flow: 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;
}
}
Я использую строку соединения, как этот «Сервер = Test; User ID = пользователь; Password = @ 1234; баз данных = тест» в качестве подключения по умолчанию объединения включен для СВЯЗИ строки я не установлен параметры, связанные с объединением. Shall i have to set the parameter regarding connection pooling?
для моего сценария
просто попробуйте – Bond
Я не получил, попробуй что? – kevin159
попробуйте с/без подключения пула и посмотрите, что быстрее – Bond