JPAとmybatisのCRUD比較

2803 ワード

ネット上で多くの招待状がJPAのスピードが遅いと言っていることを発見して、多くの招待状が反論して、それを信じないでいっそ自分でテストします
テストに使用するSpringBootバージョン:1.4.3.RELEASE
使用するデータベースのテスト:MySQL
  • 挿入速度比較(このときのデータテーブルはほぼ空)
  • JPAは、1つのデータを挿入する1回に1つのデータを挿入することを要求し、75msを使用し、その後、1つのデータを挿入することを要求するたびに、3-5msで1万個のデータ(1万個のsave)を挿入することを要求し、45590ms
  • を使用する.
  • mybatisは1本のデータを挿入する1回に1本のデータを挿入することを要求して、時377msを使って、その後毎回1本のデータを挿入することを要求して、時2-4msは1回に1万本のデータ(1万個のsave)を挿入することを要求して、時7846ms
  • を使います
  • クエリー速度の比較(このときデータテーブルに1万件のデータがある)
  • JPAクエリーデータ(JPAのfindByTitle)1回のクエリーで、クエリー結果は400件のデータで、時間は274ms、その後10回連続のクエリーで、平均時間は8ms/
  • である.
  • mybatisクエリーデータ1回クエリー、クエリー結果は400データ、使用時間528ms、その後10回連続クエリー、平均使用時間21ms/
  • クエリー20万データ速度の比較
  • JPAクエリーデータ(JPAのfindByTitle)1回のクエリーで、クエリー結果は400件のデータで、時間は452ms、その後10回連続のクエリーで、平均時間は89ms/
  • である.
  • mybatisクエリーデータ1回クエリー、クエリー結果は400データ、使用時間538ms、その後10回連続クエリー、平均使用時間115ms/
  • 百万データ量速度の比較(このときデータテーブルに108万個のデータがある)
  • JPAクエリーデータ(JPAのfindByTitle)1回のクエリーで、クエリー結果は400件のデータで、時間は892ms、その後10回連続のクエリーで、平均時間は492ms/
  • である.
  • mybatisクエリーデータ1回クエリー、クエリー結果は400データ、使用時間985ms、その後10回連続クエリー、平均使用時間483ms/
  • ページング百万データ量速度の比較(このときデータテーブルに108万個のデータがある)
  • JPAページングクエリーデータ(カスタムクエリー文)1回のクエリーで、各ページのクエリー結果は50個のデータで、24,5679142、その後10回連続のクエリーで、平均使用時間は96ms,
  • である.
  • JPAページングクエリーデータ(Pageableクエリー)1回のクエリーで、各ページのクエリー結果は50件のデータで、8ms/ 、その後10回連続のクエリーで、平均使用時間は429ms
  • である.
  • mybatisクエリーデータは1回クエリーされ、各ページのクエリー結果は50個のデータで、164ms/ 、その後10回連続クエリーがあり、平均使用時間は506ms
  • である.
  • 削除データ比較(このときデータテーブルに108万件のデータがある)
  • .
  • JPAは、1つのデータ(deteteBy)を削除する1回目の削除用時間6ms/ 、その後、1回の削除平均用時間266ms
  • を削除する.
  • JPA削除一日データ(カスタム削除)初回削除用時2ms、その後削除毎平均用時68ms
  • .
  • mybatis 1本のデータを削除1回目の削除用時1ms、その後平均用時36ms
  • を削除する.
  • 更新データの比較(このときデータテーブルに108万件のデータがある)
  • .
  • JPAは、1つのデータを更新初めて1つのデータを更新(プライマリ・キーidによる更新)し、1msを用い、その後、平均62ms
  • を更新する.
  • mybatisは、1つのデータを更新して初めて1つのデータを更新し(プライマリ・キーidに基づいて更新)、2ms/ を使用し、その後、平均40ms
  • を更新する.
  • 千万級クエリーの比較(このときデータテーブルに1100万件のデータがある)
  • JPAは1本のデータ(findById)を照会して初めて1本のデータ(プライマリ・キーidによる照会)を照会して、2ms/ を使って、それから毎回平均285ms
  • を照会します
  • JPAは1つのデータ(カスタムクエリー)をクエリーして初めて1つのデータ(プライマリ・キーidによるクエリー)をクエリーして、2ms/ を使って、それから毎回平均87ms
  • をクエリーします.
  • mybatisは1本のデータをクエリーして初めて1本のデータ(プライマリ・キーidによるクエリー)をクエリーして、2ms/ を使って、それから毎回平均377ms
  • をクエリーします
    テストデータは参照用のみ