【mysql】查询10个小时的数据很慢,那么如果10个线程同时查询会快吗?
如图。
我想查询早上8点到下午15点的数据。
我一次性执行的话。需要8秒。
然后我就想:如果7个线程同时执行是不是快点。 ?
可是结果并不快,而且还慢了。
回答
你要分析性能瓶颈在哪里,如果是cpu,而且你有很多个cpu核心的话,可以用多线程来提高速度,但线程数应该等于cpu核心数,超过就没用反而更慢。如果性能瓶颈在磁盘io,那你用多少个线程都没用。
Java不是很熟,但是从道理上讲我认为你应该写一段线程任务调度管理的逻辑。不然的话跟单线程区别不大。
理论上多个线程应该是比较快的,特别是用newCachedThreadPool,吞吐量会比较高。楼主执行的慢应该是在自己工作的电脑上执行的。工作的电脑CPU会被很多应用占着,所以无法发挥多核优势。同时多线程切换也比较耗时间,所以感觉比单线程执行的慢。
我之前在自己电脑上实验ForkJoin,发现也没有单线程执行的快!
关键的是那么多线程用的是一个testMapper变量, 这被后也是同一个jdbc connection, 加上线程切换的时间,慢是一定的了。jdbc的多线程要想快需要建立的多个connection的基础上, 你试试new 多个不同的mapper类试试。
一个服务员端10个菜很慢,于是你招了10个服务员,但是厨子还是一个。
1.分析一下SQL,是否需要加索引。
2.看一下是不是机器存在性能瓶颈。例如CPU
以上是 【mysql】查询10个小时的数据很慢,那么如果10个线程同时查询会快吗? 的全部内容, 来源链接: utcz.com/a/74642.html