我正在将 Linq to SQL 用于一个相当复杂的站点,上线后我们遇到了多次数据库超时。我注意到的第一件事是有相当多的数据库连接。
来自 ADO.net 背景,我们过去常常对其进行编码,以便任何站点都只使用一两个池连接,即使并发用户数量相当少,这也会产生可接受的性能。
所以我的问题是,这种旧的做法是否有缺陷,或者有没有办法通过 LINQ 来做到这一点?看来我们的性能问题是由如此多的数据库连接引起的,但如果这是一个问题,我想它会在所有 LINQ 教程中提到。
有什么建议吗?
最佳答案
我猜测您保留了 DataContext,并且在完成后没有对它们调用 Dispose(或者至少将它们留在周围)。
相反,您应该初始化 DataContext,执行操作,然后在完成后将其释放。您不应该在操作之间保留对它的引用。
您最好使用 using 语句来处理对 IDisposable 的调用。
关于连接池,SqlClient 默认情况下会池连接,因此除非您明确将其关闭,否则您应该已经在利用它了。当然,如果您不释放正在使用的连接,那么池化只能带您到目前为止。
关于c# - Linq 到 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/639820/