多线程groovy sql更新

时间:2016-08-24 19:56:51

标签: sql multithreading groovy sybase

我的代码可以从一个数据库中进行选择,然后进行处理以更新另一个数据库。它有一堆字段(大约100个),大约有400万行,所以这个过程非常慢,整个过程大约需要4个小时。我正在考虑如何改善这段时间,我已经实现了批处理,但似乎并没有获得太多的性能。现在我在想我是否应该进行多线程处理,如果有一种常规方法可以做到这一点。 以下是相关的代码:

Sql sql1 = Sql.newInstance(config.db.url, config.db.login, config.db.password, config.db.driver);
String queryText = "select  " + config.sql1.fields.join(",") +" from myTable"

Sql sql2 = Sql.newInstance(config.sql2.db.url, config.sql2.db.login, config.sql2.db.password, config.sql2.db.driver);
String updateSqlText = "update table2 set "+ config.sql2.fields.join("=?,") + "=?  where id=?";

sql2.cacheStatements = true

def updateCounts = sql2.withBatch(100, updateSqlText) { ps ->
    sql1.eachRow(queryText){row ->
        def resultList = []
        row.getMetaData().getColumnCount().times{
            def value = row.getAt(it)
            resultList.add(value)
        }
            resultList.add(row.SUD_ID)
            ps.addBatch(resultList)
        }
    }
}

0 个答案:

没有答案