1. Min Pool Size 的意义:假设这个地方改为50 的话。 我早期的理解: 在数据库连接总的数目不超过50的时候,根本不使用池的概念。也就是说数据库的连接时线形的从1 随着用户的新连接逐渐加到50 。超过50 之后,开始有池的概念。新的连接会重用已有的连接 结果发现这个想法是错误的。 如果我代码改为
New SqlConnection("server=.;database=northwind;trusted_connection=yes;min pool size=100")
在第一个用户调用 cnn.open 的时候,结果数据库的连接一下子初始化了100个。
在查询分析器中用 sp_who 看了一下,一下子就多了100个。
这一点确实出乎我的意料。
然后我验证了一下 COM+ 的对象池确实也是在第一次构造的时候用min pool size 实例化很多对象
PublicClass CustomerClass Customer Inherits ServicedComponent Sub New()SubNew() Dim eventLogEntry AsNew System.Diagnostics.EventLog("complus") eventLogEntry.WriteEntry("complus", "newed"& DateTime.Now) End Sub ProtectedOverridesFunction CanBePooled()Function CanBePooled() AsBoolean ReturnTrue End Function End Class
结果 COM+ app 配置pool 的时候,在对象第一次调用的时候会在系统日志中写对应min pool size 数目的日志。