- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使用乐观锁定进行批量更新?我正在使用 SimpleJdbcTemplate,对于单行,我可以构建更新 sql,它会增加版本列值并在 WHERE 子句中包含版本。
不幸的是,使用 Oracle 驱动程序时,结果 int[] Updated = simpleJdbcTemplate.batchUpdate
不包含行计数。所有元素均为 -2,表示行数未知。
是否有其他比单独执行所有更新更高效的方法?这些批处理平均包含 5 个项目(仅),但可能最多 250 个。
最佳答案
在这里大声思考 - 如果驱动程序中的批处理支持存在问题,您可以尝试使用单个查询来实现相同的目的,从而使批处理的相关性降低。 (如您所知,批处理是为了避免多个查询的延迟,但即使批处理单个查询,延迟仍然存在。)
以下是如何通过单个查询实现乐观更新
由于您可以使用临时表作为选择查询,因此您可以找到将更新哪些行,然后将其作为更新查询提交。 (当然,所有这些都在一次交易中。)
举例说明:
TempUpdateTable
---------------
id, // id of the row to be updated
timestamp, // timestamp data originally fetched
data1 // data to be updated
data2
dataN
这给出了所有要更新的数据的 ID,您可以存储这些数据以供以后引用
SELECT d.id FROM TempUpdateTable t JOIN YourData d
ON t.id=d.id WHERE t.timestamp=d.timestamp
然后可以在更新语句中使用相同的查询
UPDATE YourData
SET data=t.data1
SET data=t.data2 //etc...
FROM TempUpdateTable t WHERE t.id IN
(SELECT d.in FROM TempUpdateTable t JOIN YourData d
ON t.id=d.id WHERE d.timestamp=d.timestamp)
关于java - 乐观锁批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910715/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
这个问题在这里已经有了答案: Pessimistic versus Optimistic Concurrency (Locking versus Feedback) (3 个答案) 关闭 8 年前。
我是一名优秀的程序员,十分优秀!