【发布时间】:2017-12-09 19:31:06
【问题描述】:
我有一个更新查询,我试图通过 spring jdbc 模板的 batchUpdate 方法执行。此更新查询可能会匹配 EVENT_DYNAMIC_ATTRIBUTE 表中需要更新的 1000 行。除了超时之外,更新表中的数千行是否会导致生产数据库中的任何问题?比如,它会导致数据库崩溃还是会降低整个数据库引擎的其他连接性能……等等?
有没有更好的方法来实现这一点,而不是在 Spring JDBC 模板或 JPA 中触发单个更新查询?我对 jdbc 模板有以下设置。
this.jdbc = new JdbcTemplate(ds);
jdbc.setFetchSize(1000);
jdbc.setQueryTimeout(0); // zero means there is no limit
更新查询:
UPDATE EVENT_DYNAMIC_ATTRIBUTE eda
SET eda.ATTRIBUTE_VALUE = 'claim',
eda.LAST_UPDATED_DATE = SYSDATE,
eda.LAST_UPDATED_BY = 'superUsers'
WHERE eda.DYNAMIC_ATTRIBUTE_NAME_ID = 4002
AND eda.EVENT_ID IN
(WITH category_data
AS ( SELECT c.CATEGORY_ID
FROM CATEGORY c
START WITH CATEGORY_ID = 495984
CONNECT BY PARENT_ID = PRIOR CATEGORY_ID)
SELECT event_id
FROM event e
WHERE EXISTS
(SELECT 't'
FROM category_data cd
WHERE cd.CATEGORY_ID = e.PRIMARY_CATEGORY_ID))
【问题讨论】:
标签: java oracle sql-update spring-jdbc batch-updates