Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JDBC插入数据的最快方法_Java_Sql_Oracle_Jdbc - Fatal编程技术网

Java 使用JDBC插入数据的最快方法

Java 使用JDBC插入数据的最快方法,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,我应该对我的应用程序做一个压力测试,我需要表中的6000万条记录。我遵循的方法是,首先初始化Connection类的实例,然后通过使用该连接的PreparedStatement使用for循环插入数据,在每插入500行之后,我提交连接并重置它 使用此功能,我可以每分钟插入大约150条记录。我只想知道是否有更优化的方法来执行,以使执行所需的时间最少使用jdbc批插入: PreparedStatement ps = conn.prepareStatement(sql); int count = 0;

我应该对我的应用程序做一个压力测试,我需要表中的6000万条记录。我遵循的方法是,首先初始化Connection类的实例,然后通过使用该连接的PreparedStatement使用for循环插入数据,在每插入500行之后,我提交连接并重置它


使用此功能,我可以每分钟插入大约150条记录。我只想知道是否有更优化的方法来执行,以使执行所需的时间最少

使用jdbc批插入:

PreparedStatement ps = conn.prepareStatement(sql);
int count = 0;
for(loop construct here) {
    count++;
    ps.setString(1,someString);
    // ... and so forth
    ps.addBatch();

    if (count%500 ==0)
        ps.executeBatch()
}
ps.executeBatch();

使用Oracle实用程序(而不是您的代码)调查批插入或加载数据。在循环中提交不会提高Oracle中的性能—相反。在事务结束时只提交一次。但每分钟150行是一种缓慢的方式。使用本地服务器(6列的窄表),我可以每分钟获得约100万个。您尝试过批量插入操作吗?与批量插入相比,它将插入得非常快。您好!我是否需要执行ps.clearBatch();在执行之后?