连接池和应用程序域

3

这个问题与我之前的问题有关。

1)我有一个需要连接到一些数据库的vb.net应用程序。如果我打开同一个应用程序的多个实例(exe文件),它会使用不同的连接或使用多个连接。那么我能否将其设置为使用单个连接?

2)我听说过Appdomain(一个AppDomain提供了进程内的隔离层)。它是否有助于从同一个池中获取连接并最优地利用资源?此文章与此相关。

2个回答

2
不同的进程(您的情况#1)不会(也不能)共享数据库连接,每个连接对于该进程是唯一的。我不知道连接池是每个进程还是每个应用程序域。但是这不太可能有太大区别。您应该采用的模型是在每个功能性数据库操作周围创建,使用然后关闭连接。不要尝试保持它们处于打开状态,而是尝试将它们关闭。这最大化了重复使用的机会。除非您有特殊意愿超出理论上所需的一些多余连接,默认的连接池可以避免保持连接打开。
由于连接在从池中返回之前被重置,因此很难确定哪种情况是。也许一个测试程序先在一个应用程序域中打开,使用和关闭一个连接,然后另一个应用程序域重复该过程并查看是否建立了一个或两个与数据库的连接。

连接池是按进程、应用程序域、连接字符串以及使用集成安全性时的Windows身份池化的。 - Joseph Evensen

0
每个AppDomain都有自己的连接池,所以我不认为在你的情况下使用AppDomains会有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接