C# SQLConnection pooling

烂漫一生 提交于 2019-11-28 10:53:20
Marc Gravell

as long as you are strict about disposing your connections, the default (for sql-server at least) is that it will just work automatically. In your example you could well only have 3 underlying connections (one per connection string).

But always ensure your connections are disposed, ideally with using:

using(var conn = new SqlConnection(connectionString)) {
    // use conn
}

then it is released back to the pool (for re-use when the same connection-string is seen next) even when an exception is thrown.

To disable pooling (if you choose), include Pooling=false; in the connection-string.

Don't need to configure or set anything especially, just let it happen... Most issues I've seen are caused by folk not closing connections or being too clever

The pools are created per connection string so you'd have three in this case

Certain providers do not provide connection pooling. To my knowledge this includes connection strings to Microsoft Access Databases (Jet) and SQL Server CE (Compact edition).

The lack of connection pooling for those make database access remarkably slower.

A solution to the missing Jet pooling was for me to always have one single connection to the Jet database open for the whole program lifetime (contrary to what the recommended technique is). This speeded up my Jet Access database SQL queries from .NET applications tremendously, but also only works on local Jet databases; for Jet databases on network shares, I get relatively fast exceptions about too many open file handles.

For SQL Server CE, I found no solution so far.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!