测试四:连接速率
重用:设置max poolsize=40000,即连接池40000,数据库0(32767)。循环次数:40000
重建:设置max poolsize=4000,即连接池4000,数据库0(32767)。循环次数:4000
//重用: var sqlConn = new sqlConnection(connstring); sqlConn.open(); sqlConn.Close(); //重建: var sqlConn = new sqlConnection(connstring); sqlConn.open(); collection.Add(sqlConn);
|
测试一 |
测试二 |
测试三 |
测试四 |
测试五 |
测试六 |
测试七 |
测试八 |
平均(秒) |
重用40000 |
11.8 |
11.98 |
13.54 |
11.9 |
15.14 |
12.62 |
14.65 |
12.33 |
13 |
重建4000 |
38.64 |
42.24 |
43.50 |
45.37 |
38.27 |
41.52 |
43.66 |
44.07 |
42.16 |
如重建次数增加10倍为40000,,则平均时间比为 13:421,即重建/重用=32。重建连接比重用连接池所花费时间多31倍!
现在把连接池关闭 pooling=false,每次打开或者关闭连接时,console暂停。
for (int i = 0; i < maxCount; i++) { Console.WriteLine(string.Format("已创建连接对象{0}",i)); try { sqlConn.open(); Console.WriteLine("已打开"); Console.ReadKey(true); sqlConn.Close(); Console.WriteLine("已关闭"); Console.ReadKey(true); } catch (Exception e) { Console.WriteLine(e.Message); } }
SELECT * FROM sys.dm_exec_sessions where session_id>50 AND login_name='sa' SELECT * FROM sys.dm_exec_connections WHERE session_id IN(SELECT session_id FROM sys.dm_exec_sessions where session_id>50 AND login_name='sa')
关闭连接时再查看。Session已经关闭了。下次再连接,就是新的一个物理连接了。
连接池连接数 |
DB连接数 |
峰值错误信息 |
连接峰值 |
40000 |
0(32767) |
当前命令发生了严重错误,赢放弃任何可能产生的结果。 |
32717 |
3000 |
0(32767) |
超时时间已到,但是尚未从池中获取连接,出现这种情况可能是因为所有池连接均在使用,并达到最大池大小。 |
3000+ |
40000 |
3000 |
成功与服务器建立连接,但是在登录前的握手期间发生错误。(provider:tcp provider error:0 – 指定的网络名不可再用。) |
3000 |
|
|||
关闭连接池 |
连接速率 |
测试一 |
测试二 |
测试三 |
测试四 |
测试五 |
测试六 |
测试七 |
测试八 |
平均(秒) |
重用40000 |
11.8 |
11.98 |
13.54 |
11.9 |
15.14 |
12.62 |
14.65 |
12.33 |
13 |
重建4000 |
38.64 |
42.24 |
43.50 |
45.37 |
38.27 |
41.52 |
43.66 |
44.07 |
42.16 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。