TLDR:在多线程海量数据库插入过程中,多个线程都在等待没有明显的原因。
我们需要在数据库中创建多个行。为了加快插入速度,我们使用多线程,以便可以生成多个对象并将其并行插入。我们正在使用Hibernate,Spring批处理和Spring调度(ThreadPoolTaskExecutor,Partitioner,ItemProcessor)。我们从this example开始。
我们查看了JVisualVM的线程状态,并注意到一次不会有超过8个活动线程,无论运行程序的硬件是什么。我们尝试了#34;标准桌面"计算机(双核),还有两个AIX:一个有8个活动CPU,一个有60个活动CPU。
我们知道为什么我们一次只能拥有8个以上的工作线程?
我们已检查的事项清单: