与 PostgreSQL 连接的良好技术

Good technique for connections with PostgreSQL

我正在使用 Npgsql 通过 .NET 访问 PostgreSQL。我担心执行与数据库的连接的正确方法,因为在我看来,每次我想执行某些事务时打开连接然后关闭它是一项昂贵的操作。

所以这是总体思路:

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
}

正如您在上面所看到的,我有一个 PostgreSQL class.

实例的连接

我的问题:

这种做法对吗?或者我应该在每次要进行交易时打开和关闭连接 - 尽可能晚打开并尽快关闭?

如果我应该每次都打开和关闭连接 - 我是否应该编写一个队列来限制并发连接的数量?或者 PostgreSQL 会自己处理 - 理论上,我可以打开 200 个连接,它会没事的。

请与我分享您的经验^^

编辑: 我将 运行 每秒查询 100-200 个。

在我看来,您应该在需要时打开连接,然后立即关闭它。这将防止服务器上的大量连接保持活动状态。

根据我的经验,打开一个连接不会花费那么多时间(几毫秒,通常是你执行时间的一小部分),所以你不必太担心。

PostgreSQL 支持连接池(池大小为 customizable)所以常见模式:

using (NpgsqlConnection conn = new NpgsqlConnection(...))
{
...
}

应该是更好的选择。