查询10个小时的数据很慢,那么如果10个线程同时查询会快吗?

SIT6C_0VAO8KQ]{$6{L@2}B.png
如图。

我想查询早上8点到下午15点的数据。
我一次性执行的话。需要8秒。

然后我就想:如果7个线程同时执行是不是快点。 ?

可是结果并不快,而且还慢了。

阅读 5k
6 个回答

你要分析性能瓶颈在哪里,如果是cpu,而且你有很多个cpu核心的话,可以用多线程来提高速度,但线程数应该等于cpu核心数,超过就没用反而更慢。如果性能瓶颈在磁盘io,那你用多少个线程都没用。

Java不是很熟,但是从道理上讲我认为你应该写一段线程任务调度管理的逻辑。不然的话跟单线程区别不大。

理论上多个线程应该是比较快的,特别是用newCachedThreadPool,吞吐量会比较高。楼主执行的慢应该是在自己工作的电脑上执行的。工作的电脑CPU会被很多应用占着,所以无法发挥多核优势。同时多线程切换也比较耗时间,所以感觉比单线程执行的慢。
我之前在自己电脑上实验ForkJoin,发现也没有单线程执行的快!

关键的是那么多线程用的是一个testMapper变量, 这被后也是同一个jdbc connection, 加上线程切换的时间,慢是一定的了。jdbc的多线程要想快需要建立的多个connection的基础上, 你试试new 多个不同的mapper类试试。

一个服务员端10个菜很慢,于是你招了10个服务员,但是厨子还是一个。

1.分析一下SQL,是否需要加索引。
2.看一下是不是机器存在性能瓶颈。例如CPU

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题