我们预计会有大量用户访问使用 IIS/.Net 4.0 构建的网站,我们的 SQL Server 2008 数据库服务器正在为其提供数据。数据库大小约为 2GB。我们正在考虑将 MAX CONNECTION POOL 增加到 500 到 1000 之间——以处理预计的流量。两个问题
(1)是否有人能提供任何确切的性能数据来表明这可能带来什么样的改进? (2)在生产环境中达到 MAX CONNECTION POOL 数量会产生什么影响?
答案1
这实际上取决于应用程序及其连接方式。“连接池减少了必须打开新连接的次数。池程序维护物理连接的所有权。它通过为每个给定的连接配置保持一组活动连接来管理连接。每当用户对连接调用 Open 时,池程序都会在池中查找可用连接。如果池连接可用,它会将其返回给调用者,而不是打开新连接。当应用程序对连接调用 Close 时,池程序会将其返回到池中的活动连接集,而不是关闭它。一旦将连接返回到池中,它就可以在下一次 Open 调用中重新使用。
只有具有相同配置的连接才能被池化。ADO.NET 同时保留多个池,每个配置一个。连接通过连接字符串分为多个池,使用集成安全性时则通过 Windows 标识分为多个池。连接还根据它们是否被列入事务而分为多个池” -来自http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
请注意,如果执行的代码很差且没有将连接返回到池中,则由于额外的阻塞问题,性能实际上会降低。
就#2而言,您的连接将排队,直到应用程序关闭所有连接为止。