作者:徐晨程东_324 | 来源:互联网 | 2023-10-09 21:17
先需要查询一条数据,而这条数据包含很多种数据,所以在查询里面,就需要分别查询包含的数据,然后再组装数据。以前是一个一个的查询,然后再组装,所以我就在此开了3个线程,同时查询数据,然后等到数据查询完后进
先需要查询一条数据,而这条数据包含很多种数据,所以在查询里面,就需要分别查询包含的数据,然后再组装数据。以前是一个一个的查询,然后再组装,所以我就在此开了3个线程,同时查询数据,然后等到数据查询完后进行组装,我感觉有性能提升,但是验证结果却是变慢了,这是怎么回事?请教高手。
17 个解决方案
我要是说是你代码的问题你能给我分嘛?
嘿嘿,问的太笼统了,怎么回答呢?
java开3个线程执行查询,到数据库是不是也是多线程查询的呢,即使数据库是多线程执行了,还得看数据库的具体情况,因为一般而言,多线程性能提升也是在原先单线程执行有资源浪费比如等待等等的情况下
线程切换也是要消耗资源的,数据库频繁开关连接也是要消耗资源的。
数据库的查询也会浪费时间的 线程的切换也会费时间
可能是这些时间加起来比原来的多了呢
因为你只有一个 CPU,充其量也只是两个蛋黄,最多也就能支持两个线程。
况且,数据库操作并不是 CPU 密集型的操作,它是 IO 密集型的操作,因此使用多线程不能提高性能!
一般而言 IO 操作,特别是磁盘操作,只有一个磁头,使用多线程也是白搭,甚至会使性能降低,因为多个线程操作会导致磁头频繁地移动,不停地在寻道。
如果楼主原先的单线程数据库查询均涉及复杂的运算和磁盘搜索,那么当是在主要消耗在cpu操作时,多线程方式同时执行磁盘操作,就会充分利用资源了而不浪费资源进而提高效率了
数据库连接很耗时间的,你还是不如一次连接一次一次的查完吧