Pat*_*ski 6 .net c# theory 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
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我有一个PostgreSQL类的实例连接.
我的问题:
这种方法对吗?或者我应该每次打开和关闭连接我想要进行交易 - 尽可能晚地打开并尽快关闭?
如果我每次都应该打开和关闭连接 - 我应该编写一个限制并发连接数量的队列吗?或者PostgreSQL将自己处理它 - 理论上,我可以打开200个连接,它会没问题.
请与我分享你的经历^^
编辑: 我将每秒运行100-200个查询.
在我看来,您应该在需要时打开连接,并在需要后立即关闭它。这将阻止服务器上的大量连接保持活动状态。
根据我的经验,打开连接不需要太多时间(几毫秒,通常是执行时间的一小部分),因此您不必太担心。
PostgreSQL支持连接池(池大小是可定制的),因此常见模式:
using (NpgsqlConnection conn = new NpgsqlConnection(...))
{
...
}
Run Code Online (Sandbox Code Playgroud)
应该是更好的选择。
| 归档时间: |
|
| 查看次数: |
2960 次 |
| 最近记录: |