2011-01-27 2 views
0

したがって、あるテーブルのレコードを取得して別のテーブルに配置するプロセッサがあるとします。私は一度にメモリにロードして処理できるレコードの数を把握しようとしています。DBレコードを処理するときに適切なバッチサイズの数値を計算する方法

レコード内のデータ量、BLOB数、列数、データベースタイプ、ドライバ、フレームワーク、ボックスで使用可能なメモリ量、その他のメモリ消費量などは明らかです。など

フォームのテストと同じ環境でのプロセスの実行には、私は一度に10000件のレコードを処理することができますが、私は私が探していると思います100000

を照会する(OOMで)失敗したことがわかります適切なバッチサイズ番号を把握するのには良い戦略です。

または、私はちょうど100のような非常に控えめでバッチサイズの小さい数字で行ってください。また、クエリのオーバーヘッドについては心配しないでください。

ありがとうございました。

答えて

0

値を手動で設定可能にし、ベンチマークを実行します。値を適切な数値に設定します。私は過去に、バッチ・レコードの数が増えるにつれてパフォーマンスの向上がますます少なくなることを発見しました。そのため、一度に1レコードから10レコードへのパフォーマンスの飛躍は劇的であり、10から100まではそれほど大きくなく、100から1000まではそれほど劇的ではありません。

ベンチマークを実行して、妥当なものを見つけ出し、設定可能なままにしておけば、何か奇妙な理由で調整が必要なときはわかりません。

2

改善が見られない限り、私はさまざまなサイズのテストを行います。あなたは何かのように見えるかもしれません。

1 : 10 ms 
10 : 5 ms each 
100 : 3.5 ms each 
1K : 3 ms each. 
10K : 3.2 ms each. 

この場合、私は1Kまたは100を選択してロー側にします。

関連する問題