OpenSessionInView模式,ADO和性能

时间:2012-05-10 15:16:02

标签: asp.net ado.net sqlcommand

我们正在为我们的AspNet webapp使用带有OpenSessionInView模式的NHibernate。

使用ADO连接(SqlServer)我们希望每次访问页面时都登录不同的数据库。为此,我们是否需要在每次“页面加载”时打开连接,执行插入,然后关闭连接,或者我们是否可以在所有请求之间保持相同的连接?

锁和并发访问怎么样?我们只在这个数据库上插入。

1 个答案:

答案 0 :(得分:1)

是的,我选择了open --> insert --> close.原因是SQL Connections - 和大多数数据库连接(取决于驱动程序)是合并的,因此打开新连接实际上意味着从池中获取连接,这是便宜的(除非你在池中连接不足)。另一方面,如果您保持打开连接,则最终会出现TON并发问题,因为您必须为每个请求同步对此连接对象的访问。换句话说,一个噩梦。事实上,您将阻止您的请求并大幅降低速度。

同样,你并没有真正改善表现 - 相反 - 你正在使你的应用变得复杂。