美文网首页
JPA和mybatis的CRUD比较

JPA和mybatis的CRUD比较

作者: 徐森威 | 来源:发表于2017-02-15 22:41 被阅读0次

发现网上有不少帖子说JPA速度慢,也有不少帖子反驳,不知道信那个干脆自己测试一下

测试所用的SpringBoot版本:1.4.3.RELEASE

测试所用的数据库:MySQL

  1. 插入速度比较(此时的数据表中基本为空)

    • JPA插入一条数据
      一次请求 插入一条数据,用时75ms,之后每次请求 插入一条数据,用时在3-5ms
      一次请求 插入一万条数据(一万个save),用时 45590ms
    • mybatis插入一条数据
      一次请求 插入一条数据,用时377ms,之后每次请求 插入一条数据,用时在2-4ms
      一次请求 插入一万条数据(一万个save),用时 7846ms
  2. 查询速度的比较(此时数据表中有1万条数据)

    • JPA查询数据(JPA的findByTitle)
      一次查询,查询结果为400条数据,用时274ms,之后10次连续的查询,平均用时8ms/次
    • mybatis查询数据
      一次查询,查询结果为400条数据,用时528ms,之后10次连续的查询,平均用时21ms/次
  3. 查询20万数据量速度的比较

    • JPA查询数据(JPA的findByTitle)
      一次查询,查询结果为400条数据,用时452ms,之后10次连续的查询,平均用时89ms/次
    • mybatis查询数据
      一次查询,查询结果为400条数据,用时538ms,之后10次连续的查询,平均用时115ms/次
  4. 查询百万数据量速度的比较(此时数据表中有108万条数据)

    • JPA查询数据(JPA的findByTitle)
      一次查询,查询结果为400条数据,用时892ms,之后10次连续的查询,平均用时492ms/次
    • mybatis查询数据
      一次查询,查询结果为400条数据,用时985ms,之后10次连续的查询,平均用时483ms/次
  5. 分页查询百万数据量速度的比较(此时数据表中有108万条数据)

    • JPA分页查询数据(自定义查询语句)
      一次查询,每页查询结果为50条数据,用时96ms,之后10次连续的查询,平均用时8ms/次
  • JPA分页查询数据(Pageable查询)
    一次查询,每页查询结果为50条数据,用时429ms,之后10次连续的查询,平均用时164ms/次
  • mybatis查询数据
    一次查询,每页查询结果为50条数据,用时506ms,之后10次连续的查询,平均用时6ms/次
  1. 删除数据比较(此时数据表中有108万条数据)
  • JPA删除一条数据(deteteBy)
    第一次删除用时266ms,之后每次删除平均用时2ms
  • JPA删除一天数据(自定义删除)
    第一次删除用时68ms,之后每次删除平均用时1ms
  • mybatis删除一条数据
    第一次删除用时36ms,之后每次删除平均用时1ms
  1. 更新数据的比较(此时数据表中有108万条数据)
  • JPA更新一条数据
    第一次更新一条数据(根据主键id更新),用时62ms,之后每次更新平均2ms/次
  • mybatis更新一条数据
    第一次更新一条数据(根据主键id更新),用时40ms,之后每次更新平均2ms/次
  1. 千万级查询的比较(此时数据表中有1100万条数据)
  • JPA查询一条数据(findById)
    第一次查询一条数据(根据主键id查询),用时285ms,之后每次查询平均2ms/次
  • JPA查询一条数据(自定义查询)
    第一次查询一条数据(根据主键id查询),用时87ms,之后每次查询平均2ms/次
  • mybatis查询一条数据
    第一次查询一条数据(根据主键id查询),用时377ms,之后每次查询平均2ms/次

测试数据仅供参考

相关文章

网友评论

      本文标题:JPA和mybatis的CRUD比较

      本文链接:https://www.haomeiwen.com/subject/xuzqwttx.html