Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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:使用executeBatch或executeUpdate检查每个更新语句是否成功是否更好?_Java_Mysql_Jdbc - Fatal编程技术网

Java JDBC:使用executeBatch或executeUpdate检查每个更新语句是否成功是否更好?

Java JDBC:使用executeBatch或executeUpdate检查每个更新语句是否成功是否更好?,java,mysql,jdbc,Java,Mysql,Jdbc,我有一个MySQL数据库,需要在其中进行1k左右的更新,我正在考虑使用executeBatch还是executeUpdate更合适。preparedstatement将构建在1k或更多ID的ArrayList上(这些ID是要更新的表的PK)。对于表的每次更新,我需要检查它是否已更新(可能id不在表中)。如果该id不存在,我需要将该id添加到一个单独的ArrayList中,该ArrayList将用于批量插入 鉴于上述情况,是否更适合: 各种独立的executeUpdate(),然后存储未更新的id

我有一个MySQL数据库,需要在其中进行1k左右的更新,我正在考虑使用
executeBatch
还是
executeUpdate
更合适。preparedstatement将构建在1k或更多ID的ArrayList上(这些ID是要更新的表的PK)。对于表的每次更新,我需要检查它是否已更新(可能id不在表中)。如果该id不存在,我需要将该id添加到一个单独的ArrayList中,该ArrayList将用于批量插入

鉴于上述情况,是否更适合:

  • 各种独立的
    executeUpdate()
    ,然后存储未更新的id,或者

  • 只需创建一个批并使用
    executeBatch()
    ,它将为每个单独的语句/id返回一个0或1的数组


  • 在第二种情况下,开销将是一个额外的数组来保存所有0或1返回值。在一个情况下,开销是由于单独执行每个更新。

    我会使用批处理,因为网络延迟是必须考虑的,除非您不知何故在同一个方框上运行它。

    明确ExcUpTeBuffe(),并确保向JDBC连接字符串中添加“ReWrdEdButCheDealsSt= true”。 吞吐量的增长很难夸大。假设您有适当的索引和使用它们的WHERE子句,那么1K更新可能只需要一次更新


    如果没有连接字符串上的额外设置,批量更新的时间将与单独进行每个更新的时间大致相同。

    我想说的是,在受控延迟下尝试这两种方法,然后选择。但是似乎批处理会失败如果我们使用id ArrayList迭代地构建每个语句,executeBatch()的返回值有没有任何原因会出现顺序错误(即它们与id的ArrayList不匹配)?不,它们应该按照您将它们添加到批处理中的顺序