mysql压测快速造亿级数据

本文对比了Mybatis轻量级框架插入、JDBC直接处理(开启和关闭事务)以及JDBC批处理(开启和无事务)在大数据量插入MySQL时的效率。结果显示,JDBC批处理在开启事务的情况下速度最快,Mybatis的表现相对较慢,开启事务后性能有所提升。实验中,开启事务的JDBC批处理平均每2.5秒插入十万条数据,而Mybatis插入一万条数据耗时约28.6秒。
摘要由CSDN通过智能技术生成

造大量数据的方式有很多,比如写存储过程,或者直接用java,我现在使用的就是通过java实现大数据量的导入。

使用java也有很多方式,单条插入就不讨论了
下面主要讨论以下几种策略:

1、Mybatis 轻量级框架插入(无事务)
2、采用JDBC直接处理(开启事务、无事务)
3、采用JDBC批处理(开启事务、无事务)

先给出结论,效率比较:

Mybatis轻量级插入 > JDBC直接处理 > JDBC 批量处理。

即JDBC 批处理,效率最高

Mybatis 轻量级框架插入

Mybatis是一个轻量级框架,它比hibernate轻便、效率高。但是处理大批

量的数据插入操作时,需要过程中实现一个ORM的转换,本次测试存在实例,以及

未开启事务,导致mybatis效率很一般。这里实验内容是:

1、利用Spring框架生成mapper实例、创建人物实例对象

2、循环更改该实例对象属性、并插入。

 public class batchInsert {
    //代码内无事务
    
    private long begin = 1;//起始id
    private long end = begin+100000;//每次循环插入的数据量
    private String url = "jdbc:mysql://localhost:3306/bigdata?useServerPrepStmts=false&rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8";
    private String user = "root";
    private String password = "pwd";


@org.junit.Test
    public void insertBigData2()
    {
        //加载Spring,以及得到PersonMapper实例对象。这里创建的时间并不对最后结果产生很大的影响
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        PersonMapper pMapper = (PersonMapper) context.getBean("personMapper");
        //创建一个人实例
        Person person = new Person();
        //计开始时间
        long bTime = System.currentTimeMillis();
        //开始循环,循环次数500W次。
        for(int i=0;i<5000000;i++)
        {
            //为person赋值
		     pstm.setLong(1, begin);
    
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值