使用Spring的java程序进行jdbc executeBatch造数,执行越来越慢

【产品名称】ob

【产品版本】3.1.2 ce

【问题描述】造数insert越来越慢。

java程序是Spring工程,然后使用EL表达式进行表关系处理,然后使用jdbc executeBatch造数,64C256G的物理机上,64个线程,每500条commit一次,执行越来越慢。一共是9张表,每张表6000万数据,一共5.4亿记录。刚开始很快,后边越来越慢,从每秒60万笔,一直降速到每秒三四万。插入大概50%,也就是插入2.7亿条左右,几乎降到了每秒2万多。

当我kill进程,修改起始id,重新开始执行后,又从每秒60万笔,一直降速到每秒三四万。

很多原因导致了下降

  1. java 进程有内存泄漏
  2. 前面发生了堆积

针对第一种情况: 当你一个程序降到 10万时, 你看一下你java 进程占了多少内存,  再起一个进程插入看速度 

针对第二种情况, 你可以先控制速度到10万tps, 看能不能保持恒定的速度, 然后再累加

好。谢谢

我在把建表语句中的索引单独拉出去,造数结束后,在执行建索引。在加上内存监控看一下