SQLServer数据库的最⼤并发以及数据库连接池配置

⼀、SQL sever中的最⼤并发连接数

顾名思义,sqlserver中的最⼤并发连接数就是你能同时有多少个到sqlserver数据库的连接。

但是,⼀般情况下我们感受不到这个限制,那是因为:sqlserver默认安装后是不限制最⼤并发连接数的,如果需要,我们可以⼿动打开。设置的⽅式如下:

修改后记得重启sqlserver!

SQL sever的最⼤并发是多少?

当我们没有设置最⼤并发量的时候,理论上只要你的硬件⽀持就可以⽆限增加。本⼈⽤程序测试,并发50000个链接很轻松(见下图)。。。当然,实际⽣产环境中是不可能允许5万个并发连接存在的。具体要不要设置最⼤并发数可以根据实际的项⽬情况处理。

备注: 本⼈在做并发测试的时候,不⼩⼼将最⼤并发连接数设为1,重启服务器后,发现连不上了,差点重装数据库。最后,把sqlserver的⾮实例服务全部停掉,⽤命令⾏登录数据库修改回来的。所以,不要设太⼩,即使你在测试。。。

⼆、应⽤程序连接SQL server

参照:

当我们⽤程序访问SQL server的时候,我们⼀般设置链接字符串如下:

Data Source=127.0.0.1;Initial Catalog=master;User ID=sa;Password=123456;

其实,上⾯的连接字符串中还有很多其他的参数,⽐如:

Pooling=true

Max Pool Size=100

Min Pool Size=0

Connect Timeout=15

注:上⾯列举了四个参数的默认值,Connect Timeout是15秒。

所以,上⾯的连接字符串等同于:

Data Source=127.0.0.1;Initial Catalog=master;User ID=sa;Password=123456;Pooling=true;Max Pool Size=100;Min Pool Size=0;Connect Timeout=15;

这些默认值可以在调试的时候观察到:

 

所以,如果我们在项⽬中使⽤这种连接字符串⽽项⽬访问数据库的并发数⽐较⼤的情况下,就会出现以下的问题:

 

当遇到这种问题的时候,我们就需要⼿动的将Max Pool Size调⾼⼀点,具体多少可以参照项⽬承受的并发量。

那么,上⾯的参数Pooling、Max Pool Size等分别表⽰什么意思呢?

其实,我们在访问数据库的时候是使⽤的ado.net技术,微软提供的这套技术在底层默认开启了数据库连接池,也就是Pooling默认为true。那么默认连接池⾥的最⼤连接数据是多少呢?这就使Max Pool Size参数。⽽Min Pool Size就表⽰连接池中最⼩的连接数量,Connect Timeout表⽰⼀次连接请求最长的等待时间。

数据库连接池的⼤概⼯作原理如下:

当我们使⽤连接池的时候,我们每次创建SqlConnection的时候,.net都会从连接池中找出空闲的连接供我们使⽤,如果没找到的话就观察池⼦⾥的连接数量是否超出了最⼤连接数的设置,没超出的话就新开初始化个连接返给我们,超出的话就让我们等待直到有空闲的连接返回到池⼦⾥,如果我们等待超期了就直接返回异常了。还有,当我们⽤完连接调⽤S起来Connection的Close⽅法后,.net就会⾃动回收连接到池⼦⾥了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mariopq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值