mybatis 批量insert和普通insert的区别

有一个导入黑名单的需求,由于量比较大,所以先采用批量insert。拿批量insert 10000条做测试。

普通的insert 

<insert id="insert" parameterType="com.qiyi.zhibo.domain.QiyiZhiboBlackUser" >
  insert IGNORE into qiyi_zhibo_black_user (uid, create_time, operator
    )
  values (#{uid,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{operator,jdbcType=INTEGER}
    )
</insert>

 每秒1000条左右。

批量insert:

<insert id="batchInsert" parameterType="java.util.List" >
  insert IGNORE into qiyi_zhibo_black_user (uid, create_time, operator)
  VALUES
  <foreach collection="list" item="item" index="index" separator="," >
    (#{item.uid,jdbcType=BIGINT}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.operator,jdbcType=INTEGER}
    )
  </foreach>

</insert>

竟然每秒钟只有几条,好奇怪,把mybatis的debug日志打印出来,他会把10000条记录,分成多个sql,每个sql 批量插入255条数据(每一个sql的插入条数还不能,抽样算的条数,104,254,255都有,有点搞不懂,有空了看下代码)。

所以,暂时放弃使用批量,还是一条一条查吧,先把问题记在这里,有时间拜读下源码,看看问题出在哪里。

猜你喜欢

转载自houlinyan.iteye.com/blog/2297047