我正在使用java中的多线程读取vertica数据库中的数据。 我有大约20万条记录,我打开5个不同的线程有这样的选择查询....通过java中的多线程从数据库中读取
start = threadnum;
while (start*20000<=totalRecords){
select * from tableName order by colname limit 20000 offset start*20000.
start +=5;
}
上述查询分配20K重复的记录从数据库到每个线程读取。 例如第一个线程会先读取20k个记录,然后从100 000个位置开始读取20K个记录等
但是我没有得到性能改进。事实上,如果使用单个线程需要x秒来读取2000万条记录,那么每个线程从数据库读取需要几乎x秒的时间。 x秒(x/5秒)不应该有所改善吗?
任何人都可以指出哪里出了问题?
遵循这个逻辑,你只需要用''n''来增加线程数,以减少总处理时间''1/n''。 – Matt
网络不是多线程的。你可以使用尽可能多的线程,但一旦你使网络饱和,就是这样,没有进一步的改进可能。 – EJP