Używam Npgsql
do uzyskiwania dostępu do PostgreSQL przez .NET. Obawiam się właściwego sposobu wykonywania połączeń z bazą danych, ponieważ moim zdaniem jest to droga operacja, aby otworzyć połączenie, a następnie zamknąć je za każdym razem, gdy chcę wykonać jakąś transakcję.Dobra technika dla połączeń z PostgreSQL
Więc tutaj jest ogólna idea:
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
}
Jak widać powyżej, mam jedno połączenie do instancji PostgreSQL
klasie.
Moje pytanie:
Czy to właściwe podejście? Czy powinienem otwierać i zamykać połączenie za każdym razem, gdy chcę dokonać transakcji - otworzyć tak późno, jak to możliwe i zamknąć tak szybko, jak to możliwe?
Czy powinienem otwierać i zamykać połączenia za każdym razem - czy powinienem napisać kolejkę, która ograniczyłaby ilość współbieżnych połączeń? Lub PostgreSQL sam sobie poradzi - i teoretycznie mogę otworzyć 200 połączeń i wszystko będzie w porządku.
Proszę podzielić się doświadczeniem ze mną ^^
EDIT: będę uruchomić 100-200 zapytań na sekundę.
Prawdopodobnie powinieneś dodać, jak często chcesz wysyłać zapytania do bazy danych. –
@JakubKania Wystarczy dodać, 100-200 zapytań na sekundę. –
'Npgsql' ma wbudowane buforowanie połączeń, więc jakkolwiek wykonasz zapytania, połączenia nie zostaną całkowicie zamknięte i otwarte, nawet jeśli wywołasz' Close() 'i' Open() '. Ale czy jest to aplikacja komputerowa? Czy zapytania są równoczesne? –