Я пытаюсь увеличить пропускную способность базы данных PostgreSQL, и один огромный скачок производительности можно получить, перейдя из пулов потоков в асинхронные запросы. Вот вариант кода, который будет выполнять указанный запрос async
:Количество параллельных соединений с Npgsql и async
using (var conn = new NpgsqlConnection(connStr)) {
await conn.OpenAsync();
var id = await conn.ExecuteScalarAsync<long>(
"my_proc",
param_obj,
commandType: CommandType.StoredProcedure,
commandTimeout: 0
);
return id;
}
Ранее при использовании пулов потоков, я мог установить максимальное количество открытых соединений в любой момент времени, просто установив количество потоков (и если Я превысил MaxPoolSize, я бы видел, как израсходованы исчерпаны пулы/тайм-аут, как и ожидалось). В этом случае, не будет ли количество соединений взорваться довольно быстро? Возможно, есть более канонический способ сделать это, о котором я не знаю.