JPA和mybatis的CRUD比較

發(fā)現(xiàn)網(wǎng)上有不少帖子說JPA速度慢,也有不少帖子反駁,不知道信那個干脆自己測試一下

測試所用的SpringBoot版本:1.4.3.RELEASE

測試所用的數(shù)據(jù)庫:MySQL

  1. 插入速度比較(此時(shí)的數(shù)據(jù)表中基本為空)

    • JPA插入一條數(shù)據(jù)
      一次請求 插入一條數(shù)據(jù),用時(shí)75ms,之后每次請求 插入一條數(shù)據(jù),用時(shí)在3-5ms
      一次請求 插入一萬條數(shù)據(jù)(一萬個save),用時(shí) 45590ms
    • mybatis插入一條數(shù)據(jù)
      一次請求 插入一條數(shù)據(jù),用時(shí)377ms,之后每次請求 插入一條數(shù)據(jù),用時(shí)在2-4ms
      一次請求 插入一萬條數(shù)據(jù)(一萬個save),用時(shí) 7846ms
  2. 查詢速度的比較(此時(shí)數(shù)據(jù)表中有1萬條數(shù)據(jù))

    • JPA查詢數(shù)據(jù)(JPA的findByTitle)
      一次查詢,查詢結(jié)果為400條數(shù)據(jù),用時(shí)274ms,之后10次連續(xù)的查詢,平均用時(shí)8ms/次
    • mybatis查詢數(shù)據(jù)
      一次查詢,查詢結(jié)果為400條數(shù)據(jù),用時(shí)528ms,之后10次連續(xù)的查詢,平均用時(shí)21ms/次
  3. 查詢20萬數(shù)據(jù)量速度的比較

    • JPA查詢數(shù)據(jù)(JPA的findByTitle)
      一次查詢,查詢結(jié)果為400條數(shù)據(jù),用時(shí)452ms,之后10次連續(xù)的查詢,平均用時(shí)89ms/次
    • mybatis查詢數(shù)據(jù)
      一次查詢,查詢結(jié)果為400條數(shù)據(jù),用時(shí)538ms,之后10次連續(xù)的查詢,平均用時(shí)115ms/次
  4. 查詢百萬數(shù)據(jù)量速度的比較(此時(shí)數(shù)據(jù)表中有108萬條數(shù)據(jù))

    • JPA查詢數(shù)據(jù)(JPA的findByTitle)
      一次查詢,查詢結(jié)果為400條數(shù)據(jù),用時(shí)892ms,之后10次連續(xù)的查詢,平均用時(shí)492ms/次
    • mybatis查詢數(shù)據(jù)
      一次查詢,查詢結(jié)果為400條數(shù)據(jù),用時(shí)985ms,之后10次連續(xù)的查詢,平均用時(shí)483ms/次
  5. 分頁查詢百萬數(shù)據(jù)量速度的比較(此時(shí)數(shù)據(jù)表中有108萬條數(shù)據(jù))

    • JPA分頁查詢數(shù)據(jù)(自定義查詢語句)
      一次查詢,每頁查詢結(jié)果為50條數(shù)據(jù),用時(shí)96ms,之后10次連續(xù)的查詢,平均用時(shí)8ms/次
  • JPA分頁查詢數(shù)據(jù)(Pageable查詢)
    一次查詢,每頁查詢結(jié)果為50條數(shù)據(jù),用時(shí)429ms,之后10次連續(xù)的查詢,平均用時(shí)164ms/次
  • mybatis查詢數(shù)據(jù)
    一次查詢,每頁查詢結(jié)果為50條數(shù)據(jù),用時(shí)506ms,之后10次連續(xù)的查詢,平均用時(shí)6ms/次
  1. 刪除數(shù)據(jù)比較(此時(shí)數(shù)據(jù)表中有108萬條數(shù)據(jù))
  • JPA刪除一條數(shù)據(jù)(deteteBy)
    第一次刪除用時(shí)266ms,之后每次刪除平均用時(shí)2ms
  • JPA刪除一天數(shù)據(jù)(自定義刪除)
    第一次刪除用時(shí)68ms,之后每次刪除平均用時(shí)1ms
  • mybatis刪除一條數(shù)據(jù)
    第一次刪除用時(shí)36ms,之后每次刪除平均用時(shí)1ms
  1. 更新數(shù)據(jù)的比較(此時(shí)數(shù)據(jù)表中有108萬條數(shù)據(jù))
  • JPA更新一條數(shù)據(jù)
    第一次更新一條數(shù)據(jù)(根據(jù)主鍵id更新),用時(shí)62ms,之后每次更新平均2ms/次
  • mybatis更新一條數(shù)據(jù)
    第一次更新一條數(shù)據(jù)(根據(jù)主鍵id更新),用時(shí)40ms,之后每次更新平均2ms/次
  1. 千萬級查詢的比較(此時(shí)數(shù)據(jù)表中有1100萬條數(shù)據(jù))
  • JPA查詢一條數(shù)據(jù)(findById)
    第一次查詢一條數(shù)據(jù)(根據(jù)主鍵id查詢),用時(shí)285ms,之后每次查詢平均2ms/次
  • JPA查詢一條數(shù)據(jù)(自定義查詢)
    第一次查詢一條數(shù)據(jù)(根據(jù)主鍵id查詢),用時(shí)87ms,之后每次查詢平均2ms/次
  • mybatis查詢一條數(shù)據(jù)
    第一次查詢一條數(shù)據(jù)(根據(jù)主鍵id查詢),用時(shí)377ms,之后每次查詢平均2ms/次

測試數(shù)據(jù)僅供參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,273評論 0 4
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,283評論 6 342
  • 本文中我們介紹并比較兩種最流行的開源持久框架:iBATIS和Hibernate,我們還會討論到Java Persi...
    大同若魚閱讀 4,457評論 4 27
  • Let It Rain 專輯:Open歌手:Gotthard 今天跟組長他們中午一起吃飯的時(shí)候,XX問了請女孩吃飯...
    板必勝閱讀 211評論 0 0
  • 我跟自己說, 你曾愛寫詩, 將思緒撥弄琴弦, 卻沉默不語; 你曾愛著她, 把心思寫與文字, 卻訥于言辭。 我跟自己...
    你說那是什么閱讀 133評論 0 0

友情鏈接更多精彩內(nèi)容