При вставке данных в базу данных с помощью параллельно foreach
я получаю следующее сообщение об ошибке:Бассейн соединение исчерпано
The connection pool has been exhausted'
после вставки некоторого количества данных в базу данных
try
{
var connection = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
Parallel.ForEach(Enumerable.Range(0, 1000), (_) =>
{
using (var connectio = new NpgsqlConnection(connection))
{
connectio.Open();
using (var command = new NpgsqlCommand("fn_tetsdata", connectio) { CommandType = CommandType.StoredProcedure })
{
command.Parameters.AddWithValue("firstname", "test");
command.Parameters.AddWithValue("lastname", "test");
command.Parameters.AddWithValue("id", 10);
command.Parameters.AddWithValue("designation", "test");
command.ExecuteNonQuery();
}
connectio.Close();
}
});
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Размер пула подключения по умолчанию равен 20, поэтому либо увеличьте его, либо уменьшите количество подключений. –
Мне просто интересно, почему бы вам так поступить ... Вы понимаете, что обычно лучше делать большую работу в одной партии, а не бросать много потоков, которые подключаются, выполнять немного работы, отключать , и т.д? – atlaste
Я не уверен, что размер пула по умолчанию равен 20 - http://stackoverflow.com/questions/18943703/how-many-threads-parallel-forforeach-will-create-default-maxdegreeofparalleli –