基于mybatis向oracle中插入数据的性能对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于mybatis向oracle中插入数据的性能对比相关的知识,希望对你有一定的参考价值。

数据库表结构:

技术分享

逐条插入sql语句:

    <insert id="insert" parameterType="com.Structure">
        INSERT INTO
        STRUCTURE(
        id,
        structureNAME,
        PARENTID,
        structureType,
        description,
        deptId,
        propertyCompanyId,
        sort,
        communityId)
        VALUES(
        #{id,jdbcType=VARCHAR},
        #{structureName,jdbcType=VARCHAR},
        #{parentId,jdbcType=VARCHAR},
        #{structureType,jdbcType=NUMERIC},
        #{description,jdbcType=VARCHAR},
        #{deptId,jdbcType=VARCHAR},
        #{propertyCompanyId,jdbcType=VARCHAR},
        #{sort,jdbcType=VARCHAR},
        #{communityId,jdbcType=VARCHAR})
    </insert>

 

批量插入sql语句:

<insert id="insertBatch" parameterType="java.util.List">
        BEGIN
        <foreach collection="list" item="item" index="index"
            separator=";">
            INSERT INTO
            STRUCTURE(
            id,
            structureNAME,
            PARENTID,
            structureType,
            description,
            deptId,
            propertyCompanyId,
            sort,
            communityId)
            VALUES
            (
            #{item.id,jdbcType=VARCHAR},
            #{item.structureName,jdbcType=VARCHAR},
            #{item.parentId,jdbcType=VARCHAR},
            #{item.structureType,jdbcType=NUMERIC},
            #{item.description,jdbcType=VARCHAR},
            #{item.deptId,jdbcType=VARCHAR},
            #{item.propertyCompanyId,jdbcType=VARCHAR},
            #{item.sort,jdbcType=VARCHAR},
            #{item.communityId,jdbcType=VARCHAR})
        </foreach>
        ;END ;
    </insert>

 

性能测试结果:

数量级 批量插入耗时(ms) 逐条插入耗时(ms)
10 50 68
100 197 257
1600 1671 33384

 

 

 

 

没想到到千级别的数量级就已经有如此巨大的耗时差别。

不知道是否有写法,以及数据库类型上的影响,暂时做个记录供自己参考。

以上是关于基于mybatis向oracle中插入数据的性能对比的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis中批量插入数据对插入记录数的限制

如何向一个oracle表中快速插入很多条数据

mybatis oracle临时表的使用

java mybatis对oracle long解决办法?

Oracle整合Mybatis实现list数据插入时,存在就更新,不存在就插入以及随机抽取一条记录

mybatis 中使用oracle merger into