java – 如何加速oracle正常语句批量操作?
发布时间:2020-12-15 02:18:07 所属栏目:Java 来源:网络整理
导读:我正在开发工具以持续将更改从MongoDb导出到Oracle数据库. 我有执行批处理操作(Oracle)的问题. static void save(List result) { withBatchConnection { Statement stm - result.each { String line - stm.addBatch(line) } }}static withConnection(Closure
我正在开发工具以持续将更改从MongoDb导出到Oracle数据库.
我有执行批处理操作(Oracle)的问题. static void save(List result) { withBatchConnection { Statement stm -> result.each { String line -> stm.addBatch(line) } } } static withConnection(Closure closure) { def conn = null boolean success = false while (!success) { try { conn = getConnection() closure.call(conn) success = true } catch (e) { log.error('Connection problem',e) log.error(e,e) log.info('Retrying for 30 sec') sleep(30000) } finally { conn?.close() } } } static withTransactionConnection(Closure closure) { withConnection { Sql sql -> OracleConnection conn = sql.getConnection() as OracleConnection conn.setAutoCommit(false) closure.call(conn) conn.commit() } } static withBatchConnection(Closure closure) { withTransactionConnection { Connection conn -> def statement = conn.createStatement() closure.call(statement) statement.executeBatch() statement.close() } } 问题是我不能使用预备语句,因为操作顺序非常重要. 当我用Rewrite Batched Statements保存到MySql时,它每秒10k次操作.对于Oracle来说是400次操作 有机会让它更快吗? 我正在使用OJDBC 7和groovy 2.4.7 解决方法
请将数组大小从客户端设置为最大值并尝试
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |