有一个导入黑名单的需求,由于量比较大,所以先采用批量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都有,有点搞不懂,有空了看下代码)。
所以,暂时放弃使用批量,还是一条一条查吧,先把问题记在这里,有时间拜读下源码,看看问题出在哪里。