当前位置: 首页 > 知识库问答 >
问题:

JDBC更新远程数据库需要很长时间

谯德佑
2023-03-14

我正在通过JDBC准备语句更新远程数据库。当我执行相同的代码来更新本地数据库时,需要几毫秒的时间,但是对于远程数据库来说,大约900行的时间太长了。所有行的大小加起来是160 KB。远程主机是Hostgator,表的数据库引擎是InnoDB。

下面是我的代码:

String insertTableSQL = "INSERT INTO abc(zzz,c,d,e,timestamp) VALUES (?,?,?,?,?)";

String delSt = "DELETE FROM abc WHERE zzz= ?";

del = connection.prepareStatement(delSt);
preparedStatement = connection.prepareStatement(insertTableSQL);
connection.setAutoCommit(false);
Iterator<DataObject> itr = updationList.iterator();
while (itr.hasNext()) {
    DataObject dO = itr.next();
    del.setString(1, dO.a + ":" + dO.b);
    for (SubObject sO : dO.getsO.values()) {
        try {
            preparedStatement.setString(1, sO.a + ":" + sO.b);
            preparedStatement.setString(2, sO.c);
            preparedStatement.setInt(3, sO.d);
            preparedStatement.setFloat(4, sO.e);
            preparedStatement.setTimestamp(5, getCurrentTimeStamp());
            preparedStatement.addBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
try {
    del.execute();
    preparedStatement.executeBatch();
} catch (Exception e) {
    e.printStackTrace();
}
try {
    connection.commit();
}
...

共有1个答案

施阳夏
2023-03-14

您应该检查本地表和远程服务器上的索引是否相同。删除可能是罪魁祸首,EXPLAIN SELECT*BY abc WHERE zzz=?将向您显示那里发生了什么。您可以尝试通过向JDBC连接字符串添加useCompress=true来向连接添加压缩。这将在发送命令时缩小160k。

http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html

 类似资料:
  • 问题内容: 在工作中,我有一张大桌子(大约300万行,例如40-50列)。有时我需要清空一些列,并用新数据填充它们。我没想到的是 与用例如从同一表的其他列在sql查询中生成的数据或从子查询中的其他表查询生成的数据填充该列相比,花费的时间要多得多。不管我一次遍历所有表行(如上面的更新查询中),还是我使用光标逐行遍历表(使用pk)都没有关系。无论是在工作中使用大型表还是创建小型测试表并将其填充成千上万

  • 我试图在MSSQL中通过jdbc连接批量插入10K记录,批量插入大约需要18到20秒。我想在3秒内插入。有没有办法快速插入。 下面给出我的代码 提前谢谢你的帮助。

  • 我使用javamail通过IMAP协议从exchage帐户读取邮件。这些邮件是纯格式的,内容是XML。 几乎所有这些邮件的大小都很短(通常小于100Kb)。然而,有时我不得不处理大型邮件(大约10Mb-15Mb)。例如,昨天我收到一封13Mb大小的电子邮件。仅仅读它就花了50多分钟。这正常吗?有没有办法提高它的性能?代码是: 花费如此长时间的方法是。我做错了什么?有什么提示吗? 非常感谢,我的英语

  • 给出结果需要20多秒,而在mongo控制台中同样的查询需要不到一秒。 为什么会出现这种情况,如何减少速度差距?

  • 我有以下PHP代码在Laravel正在执行一个MySql查询: 执行此查询需要很长时间。 我对所排序的列以及其他查询的许多列都有索引。 我该怎么办? 更新: 执行的查询: 结果:

  • 问题内容: 我在重新整理模型时遇到问题。我训练了模型并使用此代码保存了模型。我不太确定这是否是正确的方法,我将不胜感激。当我尝试还原模型时会发生问题。我只需要预测,就不会再接受过培训了。从模型中恢复参数需要花费很多时间。在我仅需要预测的前提下,如何改进模型保护程序或模型恢复程序以使其快速完成。 恢复: 编辑:也许使用Google Colab的GPU训练模型,然后将其还原到我的PC上这一事实很重要。