JPA和mybatis的CRUD比較
發現網上有不少帖子說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/次
測試資料僅供參考
相關文章
- JPA工程的建立和CRUD操作
- Querydsl與JPA標準的比較
- Mybatis與傳統jdbc和Hibernate的比較MyBatisJDBC
- mybatis CRUDMyBatis
- Hibernate與 MyBatis的比較MyBatis
- Hibernate與mybatis比較MyBatis
- Hibernate與 MyBatis的比較(轉)MyBatis
- 【MyBatis】幾種批量插入效率的比較MyBatis
- Mybatis-02 CRUDMyBatis
- MyBatis-03(CRUD)MyBatis
- spring 整合 mybatis 及mybatis 的 crud 操作SpringMyBatis
- MyBatis 的簡單 CRUD 操作MyBatis
- 關於Jpa和Mybatis的一些看法MyBatis
- js 深比較和淺比較JS
- JPA之使用JPQL進行CRUD操作
- mybatis 的crud及批量cud操作MyBatis
- 2. MyBatis-CRUDMyBatis
- ejb 和 javabean的比較JavaBean
- 索引的分析和比較索引
- ImageMagic 和 GraphicsMagick 的比較
- Spring Data JPA + QueryDSL實現CRUD和複雜查詢案例Spring
- Go和Python比較的話,哪個比較好?GoPython
- Mybatis:CRUD操作及配置解析MyBatis
- 3. 使用Mybatis完成CRUDMyBatis
- Oracle date 型別比較和String比較Oracle型別
- 【mybatis-plus】CRUD必備良藥,mybatis的好搭檔MyBatis
- TreeMap和HashMap的元素比較HashMap
- Wordpress 和 Movable Type 的比較
- Unity和虛幻的比較Unity
- ArrayList和LinkedList的比較
- Mybatis-flex代替繁瑣的JPAMyBatisFlex
- Go 與 C++ 的對比和比較GoC++
- TCP和UDP比較TCPUDP
- Java和JavaSciprt比較Java
- Redis 和 Memcached 比較Redis
- MongoDB和Redis比較。MongoDBRedis
- MongoDB和MySQL比較MongoDBMySql
- ETL和EAI比較AI