问题标签 [batch-updates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1850 浏览

mysql - 执行插入/删除批处理spring-jdbc/mysql的最佳方法

首先,我会尝试描述我愿意做什么,然后,我会问我的问题。我需要执行以下操作:

  • 列出与某些条件对应的所有行
  • 做一些测试(例如:检查它是否尚未插入),如果测试通过,则将行插入另一个数据库
  • 删除行(是否通过测试)

以下是我的实现

服务方法被标记为事务性的。

在我的 DAO 中,deleteList 和 insertList 的方法非常相似,所以我将在这里放置插入方法。

}

我不确定执行此类操作的最佳方法,我在这里读到,在循环内调用更新可能会减慢系统速度(特别是在我的情况下,我一次将有大约 100K 插入/删除)。我想知道 DAO 中的这些额外循环是否不会进一步减慢我的系统,如果在处理该批次时反复发生问题会发生什么(我还考虑将测试从服务移动到 DAO,以便只有一个循环和一个额外的测试,我真的不知道这是否是个好主意)。所以,我想听听你的建议。非常感谢。

PS:如果您需要更多详细信息,请随时询问!

0 投票
1 回答
445 浏览

hibernate - 休眠批量更新

我正在尝试更新 Java 实体的集合,但 Hibernate 执行批量更新的顺序会导致约束冲突异常。我将使用下面的例子来解释这种情况。

实体 Student Int id String Name String deskID

规则:2名学生不能有同一张桌子

第一次交易:插入 2 名学生如下 Student 1 Id:1 Name:ABC DeskId:D1

学生 2 ID:2 姓名:DEF DeskId:D2

现在,在此之后,我决定更新两个学生实体以交换他们的课桌,并将一组更新的学生实体发送到休眠更新学生 1 ID:1 名称:ABC DeskId:D2

学生 2 ID:2 姓名:DEF DeskId:D1

但这会导致违反约束异常,因为我认为更新一次只发生一条记录。

我正在使用 JTA 实体管理器来管理事务。我要更新的代码看起来像这样

0 投票
1 回答
1388 浏览

java - mysql批量更新限制

batchUpdate()中的函数是否有最大记录限制SimpleJdbcTemplate?链接在这里

我需要一次插入大约 100,000 条记录。目前我在以下行中超时

有什么建议么?

0 投票
1 回答
1366 浏览

mysql - mybatis @insert 重新运行批量更新

我正在尝试在批处理会话对象上运行自定义 sql

但是我的以下代码(负责刷新和提交批次)有一些神秘的行为

它执行完美,并且 batchSqlSession.flushStatements() 确实返回了已执行语句的数量。尽管成功执行了上一个批处理,但此代码batchResult = batchSqlSession.flushStatements(); batchSqlSession.commit(); 在下一次迭代中重新运行相同的旧批次。为什么 ?

0 投票
1 回答
2420 浏览

java - MySQL Batchupdate() 与 ON DUPLICATE KEY UPDATE

我正在使用batchUpdate()在表中插入多条记录。根据要求,如果在插入主键时存在重复值,则应使用最新接收到的数据对其进行更新,因此我试图ON DUPLICATE KEY UPDATEINSERT语句中使用。当ON DUPLICATE KEY UPDATE我使用单个插入时效果很好,但是当我batchupdate()用于相同的查询时它会出错。错误如下:

测试用例:testVehicleTracking(com.em.ert.test.TrackingServiceTest): Caused an ERROR PreparedStatementCallback; 错误的 SQL 语法 [INSERT INTO test_tracking (sino, material_id, material_type, vehicle_position, rundown_num, msg_type, msg_status, msg_timestamp) VALUES(?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE]; 嵌套异常是 java.sql.BatchUpdateException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

我不明白为什么ON DUPLICATE KEY UPDATE不能使用 batchupdate()。理想情况下应该是这样,因为据我所知,工作没有什么不同。

我应该怎么做才能实现这一目标?

0 投票
0 回答
1177 浏览

java - 尝试使用 Spring 的 JdbcTemplate 删除和插入数据

我在尝试使用 Spring 的 JdbcTemplate 中的 batchUpdate 时遇到问题。

问题是我想执行两个 SQL 操作:一个 DELETE 方法(清除我的表),然后一个 INSERT 方法。我第一次拨打电话(来自jsp)时它工作正常。但是从第二次尝试开始,当我尝试调用时,没有调用或执行 DELETE 过程,只是 INSERT 过程,导致唯一约束异常。

首先我尝试了这个:

然后我尝试了这个:

我认为这可能是一些 Spring Transaction 问题。这是我在applicationContext.xml上的 DAO 程序的配置,非常简单:

有什么想法或建议吗?

0 投票
1 回答
3740 浏览

redis - REDIS/jedis 更新排序集中所有成员的分数

在 REDIS 中增加中等大小的排序集的最佳方法是什么?(最好使用 java 驱动 JEDIS) Set 中有大约 100-200K 的记录。我想将他们的分数增加一个给定的双数。

之后(增加 1)

我想出的唯一可能的解决方案是:

  1. 通过网络获取所有已排序的集合(例如 A)内容。(REDIS -> 应用程序)。
  2. 创建一个管道,在同一个 setA 中使用 ZADD 或 ZINCRBY 在循环中递增它们
  3. 然后执行管道。

还有另一种/更好的方法吗?

更新

以下是如何在 REDIS 中使用 EVAL 和 Lua 执行 for 循环以递增所有已排序的集合成员。

将其保存到字符串中并使用您的驱动程序(在本例中为 java)运行 eval。执行什么也不返回。

使用绝地武士

0 投票
1 回答
125 浏览

oracle - 使用 Oracle 视图进行批量更新

我有一个复杂的 Oracle 视图,执行大约需要 2 - 3 秒。

我正在尝试将 Oracle 视图中的值插入到表中。

我正在使用 JdbcTemplate BatchUpdate() 将多个值插入表中。

在 BatchUpdate() 中,PreparedStatement 用于设置值。

使用 Oracle 视图会导致任何性能问题吗?

通过使用 PreparedStatement,可以预编译 SQL 语句。但是在 VIEW 的情况下,每次触发插入查询时都会执行视图吗?

0 投票
1 回答
590 浏览

.net - 批量更新:StatementType 枚举值,4 无效/无效操作。连接已关闭

我正在使用企业库的数据访问块。

我的代码正在进行大批量更新,但对于我们的一位客户来说,它总是以下列异常之一告终:

0 投票
1 回答
380 浏览

spring - Spring JdbcTemplate batchUpdate 问题总是返回-3

我正在尝试在 Springs jdbcTemplate 上使用 batchUpdate,但我得到的只是一个 -3 的 int 数组。下面是我正在运行的代码。数组列表“batch”包含插入和更新。

结果数组包含 [-3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, ... ]

使用 - Spring 3.1.2.RELEASE - jtds 驱动程序 1.3.0 - SQL Server 2005

有没有人遇到过这个?