NHibernate は SqlBulkCopy よりも約 5 倍遅いため、バッチ挿入を行うためのものではないことはわかっていますが、コードを簡素化するために使用することにしました。
ただし、私のコードは 5 倍遅くはありません。2400倍遅いです。約2500件のレコードを挿入しています。log4net ロギングをオフにしました。リリースモードで実行しています。私はIDジェネレーターを使用していません(整数カウンターを介してコードで指定しています)。ステートレス セッションを使用しています。バッチ サイズを 100 に設定しました (もっと大きくすることもできますが、役に立たないようです)。ジェネレーターを再度追加しようとしましたが、そのクラスを「割り当て済み」に設定しました。
子要素を挿入していません。バッチ挿入が発生していることを確認しました。
まだ SELECT SCOPE_IDENTITY() を呼び出していますか? しかし、たとえそうだとしても、それはまだばかげた時間です。
私はあまりバッチ操作を行っていないので、このプロセスには引き続き SqlBulkCopy を使用できますが、アプリケーション全体の実行速度が向上するのではないかと心配しています。
NHProf のライセンスを持っていませんが、今が試用版をダウンロードする時期ではないかと考えています。
私は Syscache2 で NHibernate 3.3 GA を使用していますが、ここでもステートレス セッションを使用しています。
見たい HBM、構成、またはコードはありますか? 提案?
ありがとう