C# 使用PostgreSQL连接的好方法
我正在使用C# 使用PostgreSQL连接的好方法,c#,.net,postgresql,theory,C#,.net,Postgresql,Theory,我正在使用Npgsql通过.NET访问PostgreSQL。我关心的是执行数据库连接的正确方式,因为在我看来,每次我想要执行某个事务时,打开连接然后关闭连接是一个昂贵的操作 所以这里是总体思路: public class PostgreSQL { private NpgsqlConnection conn; // <- one connection for this object, open all the time public PostgreSQL(string co
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
{
私有NpgsqlConnection conn;//conn.Close();//在我看来,您应该在需要连接时打开连接,然后立即关闭。这将防止服务器上的许多连接保持活动状态
根据我的经验,打开连接不需要那么多时间(几毫秒,通常是执行时间的一小部分),因此您不必太担心。PostgreSQL支持连接池(池大小为),因此常见的模式是:
using (NpgsqlConnection conn = new NpgsqlConnection(...))
{
...
}
应该是更好的选择。您可能应该添加您希望查询数据库的频率。@JakubKania刚刚添加了它,每秒查询100-200次。Npgsql
具有内置的连接池,因此无论您如何执行查询,连接都不会完全关闭和打开,即使您调用Close()
和打开()
。但它是桌面应用程序吗?查询是并发的吗?您是否运行了性能跟踪以确定这是否真的是一个问题?大多数提供程序都会进行连接池。如果使用不同步,您可能会导致连接池不足,但您应该始终进行适当的性能测试,而不是假设一种方法优于另一种方法。默认情况下,我倾向于晚开早关,我从来没有注意到这段代码出现在热门曲目中。