我正在使用Linq to SQL来创建一个相当复杂的站点,并且在上线之后我们已经有了很多数据库超时。我注意到的第一件事就是数据库有很多连接。
来自ADO.net背景,我们曾经对它进行编码,以便任何网站只使用一个或两个池化连接,即使有很少的并发用户,这也会带来可接受的性能。
所以我的问题是,这种做旧的方式有缺陷,还是有办法做LINQ?似乎我们的性能问题是由与DB的这么多连接造成的,但如果这是一个问题,我认为它会在LINQ的所有教程中提到。
有什么建议吗?
答案 0 :(得分:3)
我猜你是在保持DataContexts并且在完成时不要在它们上面调用Dispose(或者至少留下它们。)
相反,您应该初始化DataContext,执行操作,然后在完成后处理它。您不应该在操作之间保留对它的引用。
最好使用using语句来处理对IDisposable的调用。
关于连接池,默认情况下SqlClient池连接,所以除非你明确地将其关闭,否则你应该已经利用它了。当然,如果你没有发布你正在使用的连接,那么汇集只会带你到目前为止。