连接池和Appdomain

时间:2013-08-28 10:30:12

标签: c# sql vb.net connection-pooling

此问题与我之前的question相关。

1)我有一个vb.net应用程序需要连接到某些数据库。所以,如果我打开同一个应用程序(exe文件)的多个实例,那么它使用不同的连接或使用多个连接。那么我可以使用单一连接吗?

2)我听说过Appdomain(AppDomain在进程中提供了一层隔离)。它是否有助于从同一个池中提取连接并充分利用资源? 这个article有与之相关的内容。

2 个答案:

答案 0 :(得分:2)

不同的进程(您的情况#1)不会(也不能)共享数据库连接,每个连接对于进程都是唯一的。

我不知道连接池是每个进程还是每个appdomain。 1 但它不太可能有太大的区别。您应该瞄准的模型是创建,使用然后关闭每个功能数据库操作的连接。不要试图让它们保持开放,而是试着让它们关闭。这最大化了重复使用的再利用机会。

除非你有一个特殊的意愿,在理论上需要一些多余的连接,默认池,同时避免保持连接打开只会有效。


1 由于连接在从池返回之前被重置,因此很难确定其中的哪一个是这种情况。也许一个测试程序打开一个应用程序域,在另一个应用程序域重复该过程之前使用并关闭一个连接,并查看是否建立了一个或两个与数据库的连接。

答案 1 :(得分:0)

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