发现网上有不少帖子说JPA速度慢,也有不少帖子反驳,不知道信那个干脆自己测试一下
测试所用的SpringBoot版本:1.4.3.RELEASE
测试所用的数据库:MySQL
-
插入速度比较(此时的数据表中基本为空)
-
JPA插入一条数据
一次请求 插入一条数据,用时75ms
,之后每次请求 插入一条数据,用时在3-5ms
一次请求 插入一万条数据(一万个save),用时45590ms
-
mybatis插入一条数据
一次请求 插入一条数据,用时377ms
,之后每次请求 插入一条数据,用时在2-4ms
一次请求 插入一万条数据(一万个save),用时7846ms
-
JPA插入一条数据
-
查询速度的比较(此时数据表中有1万条数据)
-
JPA查询数据(JPA的findByTitle)
一次查询,查询结果为400条数据,用时274ms
,之后10次连续的查询,平均用时8ms/次
-
mybatis查询数据
一次查询,查询结果为400条数据,用时528ms
,之后10次连续的查询,平均用时21ms/次
-
JPA查询数据(JPA的findByTitle)
-
查询20万数据量速度的比较
-
JPA查询数据(JPA的findByTitle)
一次查询,查询结果为400条数据,用时452ms
,之后10次连续的查询,平均用时89ms/次
-
mybatis查询数据
一次查询,查询结果为400条数据,用时538ms
,之后10次连续的查询,平均用时115ms/次
-
JPA查询数据(JPA的findByTitle)
-
查询百万数据量速度的比较(此时数据表中有108万条数据)
-
JPA查询数据(JPA的findByTitle)
一次查询,查询结果为400条数据,用时892ms
,之后10次连续的查询,平均用时492ms/次
-
mybatis查询数据
一次查询,查询结果为400条数据,用时985ms
,之后10次连续的查询,平均用时483ms/次
-
JPA查询数据(JPA的findByTitle)
-
分页查询百万数据量速度的比较(此时数据表中有108万条数据)
-
JPA分页查询数据(自定义查询语句)
一次查询,每页查询结果为50条数据,用时96ms
,之后10次连续的查询,平均用时8ms/次
-
JPA分页查询数据(自定义查询语句)
-
JPA分页查询数据(Pageable查询)
一次查询,每页查询结果为50条数据,用时429ms
,之后10次连续的查询,平均用时164ms/次
-
mybatis查询数据
一次查询,每页查询结果为50条数据,用时506ms
,之后10次连续的查询,平均用时6ms/次
- 删除数据比较(此时数据表中有108万条数据)
-
JPA删除一条数据(deteteBy)
第一次删除用时266ms
,之后每次删除平均用时2ms
-
JPA删除一天数据(自定义删除)
第一次删除用时68ms
,之后每次删除平均用时1ms
-
mybatis删除一条数据
第一次删除用时36ms
,之后每次删除平均用时1ms
- 更新数据的比较(此时数据表中有108万条数据)
-
JPA更新一条数据
第一次更新一条数据(根据主键id更新),用时62ms
,之后每次更新平均2ms/次
-
mybatis更新一条数据
第一次更新一条数据(根据主键id更新),用时40ms
,之后每次更新平均2ms/次
- 千万级查询的比较(此时数据表中有1100万条数据)
-
JPA查询一条数据(findById)
第一次查询一条数据(根据主键id查询),用时285ms
,之后每次查询平均2ms/次
-
JPA查询一条数据(自定义查询)
第一次查询一条数据(根据主键id查询),用时87ms
,之后每次查询平均2ms/次
-
mybatis查询一条数据
第一次查询一条数据(根据主键id查询),用时377ms
,之后每次查询平均2ms/次