Java/Postgres SQL导入速度差异
我有一个进程,它从服务中获取数据,然后将其插入表中
当我在本地运行它时
2017-07-05 10:59:51-获得5393名残疾人-7011ms
2017-07-05 10:59:54-获取440个阻塞-2906ms
2017-07-05 11:00:03-获得20778次反弹-8206ms
2017-07-05 11:00:09-将残疾人插入数据库-5705ms
2017-07-05 11:00:09-插入阻止到数据库-512ms
2017-07-05 11:00:29-插入的数据反弹到数据库-19810ms
当我在生产上运行它时
2017-07-05 11:10:31-领取5392名残疾人-5126ms
2017-07-05 11:10:34-获取440个阻塞-2421ms
2017-07-05 11:10:50-获得20778次反弹-16105毫秒
2017-07-05 11:11:10-将残疾人插入数据库-19795ms
2017-07-05 11:11:12-插入阻止到数据库-1551ms
2017-07-05 11:12:22-插入的跳转到数据库-70770ms
它几乎慢了4倍
产品为英特尔(R)至强(R)CPU E5-2650 v2@2.60GHz
本地is核心i7-2630QM@2.00GHZ
所以我真的不明白为什么会有这样的差异
我不确定是否有一些博士后调整我可以做
以下是我的插入方法: http://puu.sh/wC4vT/44d3516df1.png 在这里,我从池中获取每个插入的连接
我以前对插入重新使用相同的连接,这在本地服务器上同样有效 http://puu.sh/wC4xD/7693ad63d3.png
任何建议都将不胜感激
# 1 楼答案
因此,速度问题与代码或postgres配置无关——这是因为我的本地机器运行在SSD上,而其他服务器则不是。。 所以,虽然它们是强大的机器,但进行28000次单次写入意味着28000次磁盘刷新。 我通过批量插入解决了这个问题。这种差异令人难以置信
http://puu.sh/wHH0i/f3250caa03.png