Tôi đang sử dụng Npgsql
để truy cập PostgreSQL qua .NET. Tôi quan tâm đến đúng cách để thực hiện các kết nối tới cơ sở dữ liệu, vì theo tôi đây là một hoạt động tốn kém để mở một kết nối và sau đó đóng nó mỗi lần tôi muốn thực hiện một số giao dịch.Kỹ thuật tốt cho các kết nối với PostgreSQL
Vì vậy, đây là ý tưởng chung:
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
}
Như bạn thấy ở trên, tôi có một kết nối cho một thể hiện của lớp PostgreSQL
.
Câu hỏi của tôi:
Là cách tiếp cận này phải không? Hoặc tôi có nên mở và đóng kết nối mỗi lần tôi muốn thực hiện giao dịch - mở càng muộn càng tốt và đóng càng sớm càng tốt?
Nếu tôi nên mở và kết nối chặt chẽ mỗi lần duy nhất - tôi nên viết một hàng đợi đó sẽ giới hạn số lượng kết nối đồng thời? Hoặc PostgreSQL sẽ tự xử lý nó - và về mặt lý thuyết, tôi có thể mở 200 kết nối và nó sẽ ổn thôi.
Xin hãy chia sẻ kinh nghiệm của bạn với tôi ^^
EDIT: tôi sẽ chạy 100-200 truy vấn một giây.
Bạn có thể nên thêm tần suất bạn muốn truy vấn cơ sở dữ liệu. –
@JakubKania Chỉ cần thêm nó, 100-200 truy vấn một giây. –
'Npgsql' có tích hợp kết nối tổng hợp, do đó, tuy nhiên bạn thực hiện các truy vấn các kết nối sẽ không được đóng hoàn toàn và mở ngay cả khi bạn gọi' Close() 'và' Open() '. Nhưng nó là một ứng dụng máy tính để bàn? Các truy vấn có đồng thời không? –