日期:2014-05-18  浏览次数:20725 次

同一秒钟有有5000个数据库插入请求
业务情景:秒杀商品

问题: 
1,如果同一个时间里面有5000个数据库写入请求, 想问问程序是否会有5000个数据库连接请求?
2,如果用了数据库连接池cp30 那些, 数据库连接会如何?

------解决方案--------------------
不可能吧,秒杀请求不会全部写数据库吧
------解决方案--------------------
可以批量插入

------解决方案--------------------
如果pv很高的话,系统肯定不会是简单的架构,怎么也应该是个集群的架构,可以搞个负载均衡,连接池的存在也可是使得多个请求使用同一个连接,数据库也可以做个集群,再把数据库的连接平均分摊到各个节点上
------解决方案--------------------
看你的连接池的设计,连接池设计5000个链接 就会有5000个,但是正常情况下不会有这么大设置,要根据数据库做调整,mysql默认允许100个最大链接。
比如你cp30设置了最大的连接数是100,这时有500个并发请求同时过来,这时候会给其中的100个请求分配数据库连接,其他的400个进入等待队列等待前面100个放开占用的连接。具体的时间,值等等的设置去网上搜索下就明白了,看下他的配置的话原理也就会理解差不多了。
------解决方案--------------------
引用:
Quote: 引用:

看你的连接池的设计,连接池设计5000个链接 就会有5000个,但是正常情况下不会有这么大设置,要根据数据库做调整,mysql默认允许100个最大链接。
比如你cp30设置了最大的连接数是100,这时有500个并发请求同时过来,这时候会给其中的100个请求分配数据库连接,其他的400个进入等待队列等待前面100个放开占用的连接。具体的时间,值等等的设置去网上搜索下就明白了,看下他的配置的话原理也就会理解差不多了。


哦哦。。。 当如果没有用那些连接池的玩儿, 单单jdbc , 会发生什么事情呢?
比如mysql最大允许100个连接, 剩下的4900在等待?


------解决方案--------------------
单单jdbc的话超过连接会出现无法连接数据库的错误。
------解决方案--------------------
连接设置成单态的哇 你服务器跑代码只要在同一台机器插入 也只会生产一个连接
------解决方案--------------------
请求如果是远端用户的话 肯定会的
面对这么高的并发性 毫无疑问 选择分布式系统