sqlserver:关于数据库的最⼤并发以及数据库连接池
环境:
window10 x64专业版
sqlserver 2014 x64
⼀、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
sql连接不上服务器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技术,微软提供的这套技术在底层默认开启了数据库连接池,也就是Pooling默认为true。那么默认连接池⾥的最⼤连接数据是多少呢?这就使Max Pool Size参数。⽽Min Pool Size就表⽰连接池中最⼩的连接数量,Connect Timeout表⽰⼀次连接请求最长的等待时间。
数据库连接池的⼤概⼯作原理如下:
当我们使⽤连接池的时候,我们每次创建SqlConnection的时候,都会从连接池中出空闲的连接供我们使⽤,如果没到的话就观察池⼦⾥的连接数量是否超出了最⼤连接数的设置,没超出的话就新开初始化个连接返给我们,超出的话就让我们等待直到有空闲的连接返回到池⼦⾥,如果我们等待超期了就直接返回异常了。还有,当我们⽤完连接调⽤S起来Connection的Close⽅法后,就会⾃动回收连接到池⼦⾥了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。