簡體   English   中英

MyBatis 3.2.7龐大的BATCH插入被阻止

[英]MyBatis 3.2.7 bulky BATCH insert is blocked

我遇到一個問題,我試圖將大約10,000條記錄的BATCH插入13列的Oracle 11g表中。 Actually this is blocked if I try more than 1000 records. 同樣,對500條記錄的BATCH插入進行細粒度的測試也太慢了。

由於ORA-4031錯誤,BATCH正在數據庫上生成巨大的跟蹤文件。 每個會話中運行的SQL語句的長度超過80,000行,並以42,000個綁定變量作為輸入。

驅動程序: oracle.jdbc.driver.OracleDriver

我正在嘗試滿足要求:如果插入的任何數據無效,則必須回滾。

我的問題是:

有沒有一種方法可以告訴MyBatis將傳入的大批量分為小批,每個小批說10條記錄,將它們插入,但如果其中一個失敗則回滾所有批處理,並且僅在成功插入所有批處理時才提交?

還是有其他替代方法?

Below is the xml mapping for the insert:

<insert id="insertToTable" parameterType="java.util.List">
        INSERT ALL
        <foreach item="line" collection="list" >
            <foreach item="lineItem"
                collection="line.entrySet()" open="" close="" separator="">
                into
                TABLE_TEST_T
                (col1, col2, col3, col4, col5,
                col6, col7, col8, col9, col10,
                col11, col12, col13)
                values(
        <!--        #{lineItem.item1, jdbcType=DATE}, -->
                #{lineItem.item1, jdbcType=VARCHAR},
                #{lineItem.item2, jdbcType=VARCHAR},
                #{lineItem.item3, jdbcType=VARCHAR},
                #{lineItem.item4, jdbcType=NUMERIC},
                #{lineItem.item5, jdbcType=NUMERIC},
                #{lineItem.item6, jdbcType=NUMERIC},
                #{lineItem.item7, jdbcType=NUMERIC},
                #{lineItem.item8, jdbcType=NUMERIC},
                #{lineItem.item9, jdbcType=NUMERIC},
                #{lineItem.item10, jdbcType=NUMERIC},
                #{lineItem.item11, jdbcType=NUMERIC},
                #{lineItem.item12, jdbcType=NUMERIC},
                #{lineItem.item13, jdbcType=NUMERIC}    
                )           
            </foreach>
        </foreach>
        SELECT * FROM dual
    </insert>

感謝您的反饋。

是的,您可以啟動事務並在發生錯誤時將其回滾,或者在沒有錯誤的情況下將其提交。 有許多方法可以管理Java應用程序中的事務

由於使用的是myBatis,因此可以查看SqlMapTransactionManager

我在路由中使用了駱駝EIP拆分器,並將查詢綁定在事務中。 可以在http://camel.465427.n5.nabble.com/Camel-Mybatis-2-13-1-BATCH-of-10-000-records-tt5756211.html中找到更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM