这回不打算用ADO连接池进行测试工作了,以上程序中pooing = false表示也不打算使用ADO连接池,通过连接串Open & Close进行10次连接程序,看看是否使用性能计数器观察SQL Server的“物理连接”数量。
从下面的锯齿图可以看出每执行一次con.Open(),SQLServer的“物理连接”数量都增加一,而每执行一次con.Close(),SQLServer的“物理连接”数量都减少一。由于不使用连接池,每次Close连接的时候Data Provider需要把“逻辑连接”和“物理连接”都销毁了,每次Open连接的时候Data Provider需要 建立“逻辑连接”和“物理连接”,锯齿图因此而成。#t#
下面启用连接池再测试一次。把连接串的pooling参数改为true,另外在for循环后加上Console.Read()。
从下图可以看出,从***次Open到第执行完Console.Read()这段时间内,SQL Server的“物理连接”数量一直保持为1,直到关闭console应用程序的进程后SQL Server的“物理连接”数量才变为0。由于使用了ADO连接池,每次Close连接的时候Data Provider只需把“逻辑连接”释放回ADO连接池,对应的“物理连接”则保持打开的状态。每次Open连接的时候,Data Provider只需从连接池取出一个“逻辑连接”,这样就可以使用其对应“物理连接”而不需建立新的“物理连接”,直线图因此而成。