Sto usando Npgsql
per accedere a PostgreSQL via .NET. Sono preoccupato per il modo corretto di eseguire connessioni al database, dal momento che a mio parere si tratta di un'operazione costosa per aprire una connessione e quindi chiuderla ogni volta che voglio eseguire alcune transazioni.Buona tecnica per le connessioni con PostgreSQL
ecco l'idea generale:
public class PostgreSQL
{
private NpgsqlConnection conn; // <- one connection for this object, open all the time
public PostgreSQL(string connString)
{
conn = new NpgsqlConnection(connString);
conn.Open();
}
// ...here making some queries...
public void Close() => conn.Close(); // <- use this in the very end of the program
}
Come potete vedere sopra, ho una connessione per un'istanza di PostgreSQL
di classe.
La mia domanda:
È questo il giusto approccio? O dovrei aprire e chiudere la connessione ogni volta che voglio fare una transazione: aprire il più tardi possibile e chiudere il prima possibile?
Se dovessi aprire e chiudere le connessioni ogni volta - dovrei scrivere una coda che limiti la quantità di connessioni simultanee? O PostgreSQL lo gestirà da solo - e, teoricamente, posso aprire 200 connessioni e andrà tutto bene.
Si prega di condividere la vostra esperienza con me ^^
EDIT: correrò 100-200 query al secondo.
Probabilmente si dovrebbe aggiungere la frequenza con cui si desidera interrogare il database. –
@JakubKania Appena aggiunto, 100-200 query al secondo. –
'Npgsql' ha un pool di connessioni integrato, quindi, in ogni caso, le connessioni non saranno completamente chiuse e aperte anche se chiamate' Close() 'e' Open() '. Ma è un'applicazione desktop? Le domande sono concomitanti? –