【发布时间】:2011-04-24 12:25:50
【问题描述】:
OpenJPA 在 FetchPlan 中提供了一些参数。 (http://openjpa.apache.org/builds/1.2.0/apidocs/org/apache/openjpa/persistence/FetchPlan.html) 我被困在其中之一,FetchBatchSize。 希望有人可以分享他们的经验。
这是场景,假设我要从数据库中选择多达 1000 条记录(MS-SQL) 1. 如果我将 FetchBatchSize 设置为默认值 -1,则返回 1000 条记录需要大约 20 秒;
-
1234563将花费更长的时间(在我的测试中为 50 秒),这是不可接受的。
好的,所以,我猜如果 FetchBatchSize 超过用户想要的数量,则需要更多时间。我可以根据用户设置的计数在运行时更改 FetchBatchSize。你想要 1000,我将 FetchBatchSize 设置为 1000,你想要 100,我将其设置为 50,但是如果用户只需要几条记录怎么办?我也将 FetchBatchSize 设置为 2?
所以我的问题是,当 maxResultCount 是可变的时,如何选择合适的 FetchBatchSize?如果 openJPA 文档中有任何 DEFAULT 值(例如 20)适用于大多数场景?或者建议在运行时更改。
感谢任何评论。谢谢!
【问题讨论】:
-
[off topic] 谁能确认这个问题是否适用于 hibernate 和 toplink ?
-
我不熟悉hibernate或toplink,但我想可能是一样的。 (说到 FetchBatchSize)
标签: hibernate jdbc fetch openjpa toplink