插入到Oracle DB的速度很慢-JDBC

时间:2018-08-05 20:00:28

标签: oracle jdbc

我正在遍历一百万个XMLS队列,我解析每个xml并将其值插入5个arraylist中。每个arraylist将数据加载到Oracle中的表中。 解析1000个XML之后,我将数据加载到DB中,而每个表的数据量约为500k-1M条记录。 问题 每次加载后,插入时间都会延长,并且在3-4次加载后,程序会大幅度移动。 问题 1.如果谈论性能,哪个更好:打开多个数据库连接并插入少量数据或打开少量连接并包含大量数据? 2.请帮助减少插入时间。

我的数据库加载代码之一的示例

//Party
        sql="INSERT INTO  CRMAS_ODS_RAW_DATA.PARTY_TMP(BATCH_ID, SOURCE_SYSTEM, UPDATE_DATE, PARTY_KEY, TCCID, LEI_ID, NATIONAL_ID, OFF_SET)  VALUES(?,?,?,?,?,?,?,?)";
        ps = con.prepareStatement(sql);
        timestamp = new Timestamp(System.currentTimeMillis());
        count = 0;
        con.setAutoCommit(false);
        for(Party par : al4) 
        {
            // get batchid
            ps.setInt(1,par.getA1());
            // get SOURCE_SYSTEM
            ps.setString(2,par.getA2());
            // get UPDATE_DATE
            ps.setTimestamp(3,timestamp);
            // get party_key
            ps.setString(4,par.getParty_key());
            // get TCCID
            ps.setInt(5,par.getA4());
            // LEI_ID
            ps.setString(6,par.getLEI());
            // NATIONAL_ID
            ps.setString(7,par.getNationalId());
            // OFF_SET
            ps.setLong(8,par.getOffset());

            ps.addBatch();
            if(++count % Batch_party == 0) {

                ps.executeBatch();
                timestamp = new Timestamp(System.currentTimeMillis());
            }
        }
        con.setAutoCommit(false);
        ps.executeBatch(); // insert remaining records
        con.commit();

0 个答案:

没有答案