猿问

jdbc数据库连接的使用问题

看了一些解释数据源,连接,连接池的文章,有很多不明白的地方.

为什么需要操作数据库的时候,重新建立连接会很消耗时间和资源?不应该是一直保存着一些连接不销毁比较消耗内存吗?

还有就是比如说十万个用户一起访问,那你不就必须的有十万个连接呀,就比如说你自己实现了DataSourse里面有已经创建好的1000个连接,但是连接不还是不够用么,是新建一个连接给用户用快,还是等其中的用户已经归还连接之后再给其他用户用快呢?(总是觉得新建连接比较快啊)


炎炎设计
浏览 551回答 1
1回答

温温酱

不是用户去直接连接数据库,而是用户连接服务器,而服务器去连接数据库。让用户直接访问数据库那后果就不用说了吧。服务器去连接数据库,一定是要多线程的,但是这个线程量一定要是测试好的,效率和配置平衡的一个点。然后这些线程是可以共享的,一些线程满载一些清闲的自动去负载一些压力。比如这个数据库最大连接是1000,那在平时你只需要开500或者200就可以。这样可以保证正常访问,也可以保证效率较高。当服务器线程较多在陆续开放其他连接数据库线程。比如地下城平时随意进,也不卡。满载时线程开放最多,但是依旧会卡。证明了数据库连接线程确实是有峰值的,1000的线程量,有10000个人同时访问,你也不能全部开放,需要排队,要不整体会有可能崩溃。数据库和用户之间不是一对一,而是一对多或者多对多。我买商品和玩游戏用的可能就不是一个线程。但是每一个线程都不是给固定一个用户使用的。而是多个用户去共享这一个线程。比如1000个线程,可能会让5000个人同时使用。。当人数没有达到峰值那肯定是新开线程快,但是人数多了,就要等其他用户归还了。这就是游戏排队的原因
随时随地看视频慕课网APP
我要回答