まず、これはおそらく既製ですか?Hibernateの 'session.flush'でのマルチスレッディング
Hibernate 3.6、JDBC batch_size 500、 200.000エンティティ上のHiloジェネレータを使用します。
私の例では、56秒かかるリクエストがあり、セッションで200,000のエンティティを作成しています。したがって、session.flush()
コマンドは、%100に1つのCPUコアしかない56秒間に32秒かかる。
更新が必要なエンティティのリストを取得し、SQLステートメントを作成する方法はありますか。たとえば、4つのスレッドですか?
私はちょうどsession.flushコマンドの前後に32秒かかります。そして、これまでのところstackoverflowを検索していた限り、flushはSQL文が作成される場所ですか、またはそれらがすべてmySQL側のトランザクションに送信されるコマンドですか? – kommradHomer
@kommradHomer: 'flush()中に' SQL文が生成され**、**がデータベースサーバに送信されます。 SQLの作成にはほんの数分しかかかりません。実際のオーバーヘッドはデータを転送し、結果(データベース側)を待つことです。 –
と私はローカルホスト上でこのテストを行うことを考えて、そのすべてについてのMySQLの – kommradHomer