Я знаю об этом сообщении: Postgres Npgsql Connection Pooling Но это не полностью решило мою проблему .
Я концептуально понимаю, как работают пулы соединений, но я изо всех сил пытаюсь понять, как применять их в моем приложении .NET с помощью Npgsql.
Вот что я сейчас делаю:
NpgsqlConnectionStringBuilder cb ... // build command and set properties
cb.Pool = True // set pool setting to True and set max pool
NpgsqlConnection conn = new NpgsqlConnection(cb.ConnectionString)
public void thread1()
NpgsqlCommand cmd = new NpgsqlCommand(conn)
cmd.Connection.Open()
// code
cmd.ExecuteNonQuery
cmd.Connection.Close()
public void thread2() {
//... same thing
}
Насколько я понимаю, всякий раз, когда я делаю новую команду, я на самом деле просто беру одно и то же соединение из пула соединений. Я не понимаю, как использовать остальную часть пула соединений, создав только один объект NpgsqlConnection.
Что происходит, когда я делаю NpgsqlConnection.Open() (он же conn.Open()) против cmd.Connection.Open()?
Я чувствую, что есть что-то основное, чего я не понимаю.
NpgsqlConnection
сколько хотите, и вы должны это делать, если вы также правильно их размещаете (читай:using
блоков). Вы не должны касатьсяcmd.Connection
напрямую. Объект подключения и базовое соединение (сокет, именованный канал и т. д.) — это не одно и то же, и это базовое соединение объединяется в пул. - person madreflection   schedule 22.04.2021