首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    executeBatch 背后还有“坑”

    实际测试显示,在 executeBatch() 的场景下,语句级触发器会被重复触发,导致插入性能大幅下降。本文将详细解析问题成因、验证方法与规避策略。...影响版本该问题在以下版本均存在:22.2.14.100 及以前版本23.2.1.100 及以前版本三、问题原因分析经过内部排查,发现 YashanDB 在批量执行 SQL 时存在如下实现逻辑:JDBC 的 executeBatch...;for (int i = 0; i executeBatch();conn.commit();} catch...风险与影响项目说明性能影响每执行一次批处理,就等于 N 次触发器执行行为异常与 Oracle 等主流数据库行为不一致逻辑风险若触发器内含写操作,易导致副作用累加六、解决方案与规避建议推荐方式:避免使用语句级触发器与executeBatch...八、经验总结项目建议使用触发器 + executeBatch避免语句级触发器插入逻辑复杂拆分业务逻辑或前移处理验证触发行为推荐使用辅助表进行统计Oracle 迁移用户注意行为差异,提前测试

    22210

    【Flink】第四篇:【迷思】对update语义拆解D-、I+后造成update原子性丢失

    flush();中主要调用了attemptFlush,而attemptFlush中只有简单的一行代码,调用了JdbcBatchStatementExecutor#executeBatch,至于具体调用了哪个...JdbcBatchStatementExecutor实现类的executeBatch,可以程序断点调式或者找到所有实现子类分析,在TableBufferReducedStatementExecutor实现类的注释...delete * events, and reduce them in buffer before submit to external database. */ 显然,我们的程序应该是调用了这个类的executeBatch...其中,executeBatch: @Override public void executeBatch() throws SQLException { for (Map.Entry<RowData...(); deleteExecutor.executeBatch(); reduceBuffer.clear(); } 分析:reduceBuffer是一个缓存线程池定时任务间隔之间到来的

    2.7K51
    领券