OpenJPA は、FetchPlan でいくつかのパラメーターを提供しました。(http://openjpa.apache.org/builds/1.2.0/apidocs/org/apache/openjpa/persistence/FetchPlan.html) そして、そのうちの 1 つである FetchBatchSize で行き詰まりました。誰かが自分の経験を親切に共有してくれることを願っています。
これがシナリオです。たとえば、データベース (MS-SQL) から最大 1000 レコードを選択するとします。
FetchBatchSize を 100 に設定すると、時間コストが劇的に 2 秒未満に短縮されました。これは良いことですが、FetchBatchSize 100 より少ない 50 レコードのみを取得しようとすると、はるかに長い時間がかかります。 (私のテストでは50秒)これは受け入れられません。
わかりましたので、FetchBatchSize がユーザーが希望する数を超えると、さらに時間がかかると思います。ユーザーが設定したカウントに従って、実行時に FetchBatchSize を変更できます。あなたは 1000 が必要で、私は FetchBatchSize を 1000 に設定し、あなたは 100 が必要で、私はそれを 50 に設定しましたが、ユーザーが少数のレコードしか必要としない場合はどうでしょうか? 私も FetchBatchSize を 2 のように設定しますか?
私の質問は、maxResultCount が可変の場合に適切な FetchBatchSize を選択する方法ですか? ほとんどのシナリオに適した openJPA ドキュメントに 20 などの DEFAULT 値がある場合はどうなりますか? または、実行時に変更することをお勧めします。
どんなコメントでも大歓迎です。ありがとう!