我试图在MSSQL中通过jdbc连接批量插入10K记录,批量插入大约需要18到20秒。我想在3秒内插入。有没有办法快速插入。
下面给出我的代码
public void BatchInsert() {
PreparedStatement pStmnt = null;
try {
final int batchSize = 1000;
int count = 0;
Connection con = createConnection();
long end = System.currentTimeMillis();
System.out.println("connection creation time :: " + (end - start));
start = System.currentTimeMillis();
pStmnt = con.prepareStatement("insert into testtable values(?)");
for (int i = 1; i <= 10000; i++) {
pStmnt.setInt(1, i);
pStmnt.addBatch();
if (++count % batchSize == 0) {
pStmnt.executeBatch();
}
}
pStmnt.executeBatch(); // insert remaining records
end = System.currentTimeMillis();
System.out.println("total insert time :: " + (end - start));
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pStmnt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
提前谢谢你的帮助。
如果您的连接默认为自动提交模式,那么您可以通过以下方式获得性能的显著提高
con.setAutoCommit(false);
在进入循环之前,添加批处理,然后执行
con.commit();
在最后一个执行包之后
。
据我所知,您在数据库表中使用了更多的索引。这就是为什么它需要更多的时间。因此,在插入大小写时,首先您需要以某种方式停止索引(可能是删除和重新创建或删除不必要的索引)。
出于操作目的,您可以从testtable
中删除所有索引,然后运行批处理。希望您能获得最短的插入时间。
归功于@RBarryYoung
我正在通过JDBC准备语句更新远程数据库。当我执行相同的代码来更新本地数据库时,需要几毫秒的时间,但是对于远程数据库来说,大约900行的时间太长了。所有行的大小加起来是160 KB。远程主机是Hostgator,表的数据库引擎是InnoDB。 下面是我的代码:
我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语
给出结果需要20多秒,而在mongo控制台中同样的查询需要不到一秒。 为什么会出现这种情况,如何减少速度差距?
我有以下PHP代码在Laravel正在执行一个MySql查询: 执行此查询需要很长时间。 我对所排序的列以及其他查询的许多列都有索引。 我该怎么办? 更新: 执行的查询: 结果:
问题内容: 我在重新整理模型时遇到问题。我训练了模型并使用此代码保存了模型。我不太确定这是否是正确的方法,我将不胜感激。当我尝试还原模型时会发生问题。我只需要预测,就不会再接受过培训了。从模型中恢复参数需要花费很多时间。在我仅需要预测的前提下,如何改进模型保护程序或模型恢复程序以使其快速完成。 恢复: 编辑:也许使用Google Colab的GPU训练模型,然后将其还原到我的PC上这一事实很重要。
在我们的kafka broker设置中,GC平均需要20毫秒,但随机增加到1-2秒。极端情况持续9秒。这种情况的发生频率相当随机。平均每天发生15次。我尝试过使用GCEasy,但没有给出任何见解。我的内存使用率为20%,但进程仍然使用交换,尽管内存可用。感谢您对如何将其最小化的任何意见 JVM选择: GC日志: