質問
私はウェブアプリケーションを受け取るメッセージをHTTPインタフェース、例えば:
http://server/application?source=123&destination=234&text=hello
この要求はIDを送信者のID、先のテキストのメッセージ。
このメッセージの処理のように:
- のマッチングユーザオブジェクトのソースとデスティネーションからデータベース
- 作成ツリーのオブジェクトメッセージを含む分野でのメッセージテキストやユーザオブジェクトのソースとデスティネーション
- これを徹底するツリーデータベース化します。
ツリーの読み込まれる他のアプリケーションができません。
使っていOracleのバックデータベースJPAとToplinkのためのデータベースの取り扱います。できれば、今まで泊まれます。
な最適化まで達成~30分を要求/secのスループットの私の環境です。ることのない要~300要求/sec.その測定の性能ボトルネックはこの電話 em.persist()
かになっています。まだコメントアウトする線のスループットのどれもが1000以上の要請/sec.
ん、さまざまな運転条件に対しての応用が簡単なJDBC通話が持続1万メッセージと同じデータベースです。使用したバッチとなった100を挿入し、コミットし、繰り返しまですべての記録のデータベースです。を測定した~500の要請/secのスループットをこのシナリオを満たすことになります。
そのための最適化を挿入ります。ただし前述したように思いをJPAやToplinkことなく、純粋なJDBC.
い方をバッチを挿入しますとJPAやToplink?できるださいその他の技術の向上にJPAを継続実績を教えてください。
追加情報:
"要望-sec"はこちら:総数/合計時間は開始から試験前の記録をデータベースです。
を作ってみたのがきっかけとの通話を em.persist()
非同期にメモリー中のキューのサーブレットものpersister.また、性能に大きくしかし、キューも育っての適用を受ける約200の要請/秒の継続的な受け入れ可能な解決策でした。
このアプローチを分離し収集したご要望に100ミリ秒という em.persist()
すべての収集を前commiting本取引の対象となります。のEntityManagerFactoryキャッシュ間の各取引はない。
解決
だから切り離し、JPA ータの使用、裸TopLink APIに含まれています。できるのではないでしょうかチャックは、物だけに固執入UnitOfWorkとをコミットするUnitOfWorkおスケジュール(同期または非同期).なお、費用のem.持続()は暗黙のクローンが全体のオブジェクトグラフで表示します。TopLink働く場合はuow.registerObject()お二人のユーザオブジェクト、省自体の認試験にも合います。なんと:
uow=sess.acquireUnitOfWork();
for (job in batch) {
thingyCl=uow.registerObject(new Thingy());
user1Cl=uow.registerObject(user1);
user2Cl=uow.registerObject(user2);
thingyCl.setUsers(user1Cl,user2Cl);
}
uow.commit();
これは非常に古い学校TopLinkちなみ;)
なお、バッチするだけでバッチの書面により特に一括書込みパラメータの結合を始めるためにはこの簡単な例思いますが非常に大きな影響を与える。
その他のものを探:ご列のサイズです。多くの時間を過ごした書物TopLinkは、実際の読み配列情報データベースから、特に小型のデフォルトのように複数百にものとして列のサイズ)。
他のヒント
あな措置の請求/sec"?つまり、どを用いて第31回か?どのリソースがブロッキングされている?の場合-フロントエンド/servlet/ウェブ部分にはできまrun em.持続()別のスレッドを返す。
また、お取引をすか?きをEntityManagerFactoryオブジェクトの各すか?