6

Hibernateを介してデータベースに多くのエンティティを挿入する必要があります。そこで、Id生成に最も効果的なアルゴリズムを見つけたいと思います。

したがって、 Hibernate Documentationには、広く使用されている4つの生成戦略があります。

  • 身元
  • 順序
  • テーブル
  • AUTO

MySQLデータベースを使用する必要があるため、SEQUENCE生成戦略を適用できません。他の戦略はどうですか?パフォーマンスの観点から最も効率的なものは何ですか?

4

2 に答える 2

10

Hibernateで最高のIDジェネレーターは、 hiloなどの適切なオプティマイザーと組み合わせた拡張テーブル拡張シーケンスです。私は、1秒あたり10,000を超えるレコードを挿入する、拡張テーブル+ヒロの経験があります。

ところで、「hiloは生成されたエンティティごとに追加のクエリが必要」という記述は明らかに誤りです。オプティマイザの全体的なポイントはこれを防ぐことです。

于 2013-01-10T14:12:22.370 に答える
1

を使用することはできず、既存のアルゴリズムからサポートされているジェネレータアルゴリズムを自動的に選択するだけなので、とが残りSEQUENCEます。AUTOIDENTITYTABLE

  • TABLE:hi / loアルゴリズムを使用して、hi値のソースとしてテーブルと列を指定し、long、short、またはint型の識別子を効率的に生成します。hi / loアルゴリズムは、特定のデータベースに対してのみ一意の識別子を生成します。->生成されたエンティティごとに追加のクエリを意味します。(オプティマイザーを使用する場合、これは当てはまりません。残念ながら、オプティマイザーが指定されていない場合、オプティマイザーを使用しないことが通常のデフォルトです。)

  • IDENTITY:DB2、MySQL、MS SQL Server、Sybase、およびHypersonicSQLのID列をサポートします。->パフォーマンスに関しては、これがHibernateなしで通常行うのと同じ方法です。データベースが生成され、オーバーヘッドはほとんどありません。

Hibernate固有のジェネレーターは他にもありますが、パフォーマンス的にはデータベースで生成されたIDに勝るものはありません。(5.1.2.2.1. Various additional generatorsリンクされたドキュメントを参照してください。)

于 2013-01-10T13:50:22.337 に答える