.NET连接池
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Diagnostics; namespace ConnectionPoolDemo01 { /// <summary> /// 连接字符串 /// </summary> public class ConnStr { public string Flag { get; set; } public string ConnString { get; set; } } /// <summary> /// 连接池的最大连接数对并发数的影响 /// LDH @ 2018-7-13 /// </summary> internal class Program { private static void Main() { Console.Title = "连接池的最大连接数对并发数的影响-LDH"; ShowEffects(); Console.ReadKey(); } private static void ShowEffects() { var connStringNoPooling = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;Pooling=False;"; var connStringDefault = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;"; var connStringPooling100 = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;Pooling=True;Connection Lifetime=10;Min Pool Size = 100;Max Pool Size=100; "; var connStringPooling200 = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;Pooling=True;Connection Lifetime=10;Min Pool Size = 100;Max Pool Size=200; "; var connStringPooling300 = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;Pooling=True;Connection Lifetime=10;Min Pool Size = 100;Max Pool Size=300; "; var connStringPooling500 = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;Pooling=True;Connection Lifetime=10;Min Pool Size = 100;Max Pool Size=500; "; var connStringPooling1000 = @"Data Source=(local);Initial Catalog=TestDB;Integrated Security=True;Pooling=True;Connection Lifetime=10;Min Pool Size = 100;Max Pool Size=1000; "; var list = new List<ConnStr> { new ConnStr {Flag = "无连接池", ConnString = connStringNoPooling}, new ConnStr {Flag = "默认 ", ConnString = connStringDefault}, new ConnStr {Flag = "最大100 ", ConnString = connStringPooling100}, new ConnStr {Flag = "最大200 ", ConnString = connStringPooling200}, new ConnStr {Flag = "最大300 ", ConnString = connStringPooling300}, new ConnStr {Flag = "最大500 ", ConnString = connStringPooling500}, new ConnStr {Flag = "最大1000", ConnString = connStringPooling1000} }; foreach (var connObj in list) { var sw = Stopwatch.StartNew(); TestQuery(connObj.ConnString); sw.Stop(); Console.WriteLine("{0} => 消耗毫秒数:{1}", connObj.Flag, sw.ElapsedMilliseconds); } } private static void TestQuery(string connString) { var sql = "select top 1 * from dbo.Person;WAITFOR DELAY '00:00:00.500'"; var dt = new DataTable(); using (var conn = new SqlConnection(connString)) { conn.Open(); var cmd = new SqlCommand(sql, conn); var adapter = new SqlDataAdapter(cmd); adapter.Fill(dt); } } } } /* 无连接池 => 消耗毫秒数:880 默认 => 消耗毫秒数:521 最大100 => 消耗毫秒数:518 最大200 => 消耗毫秒数:521 最大300 => 消耗毫秒数:524 最大500 => 消耗毫秒数:514 最大1000 => 消耗毫秒数:523 如此看来, 连接数增加对增加并发有一定的改善作用,但达到一定程度后不再上升。可能 256 ~ 512 比较合适 可能跟CPU性能也有关系, 哪位有比较强悍的机器可以一试 */
本文作者:Love In Winter
本文链接:https://www.cnblogs.com/LifeDecidesHappiness/p/9303725.html
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以扫一扫,任意打赏,您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/LifeDecidesHappiness/p/9303725.html
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以扫一扫,任意打赏,您的鼓励是博主的最大动力!