【问题标题】:Oracle Bulk Collect - Limit numberOracle 批量收集 - 限制数量
【发布时间】:2014-08-01 08:10:47
【问题描述】:

我阅读了Bulk Collect 并使用它编写了一些代码(尚未部署)。返回的总行数在 80.000 附近。我将一批返回的行数限制为10.000,但是没有使用这个数字的依据,我只是即兴发挥。

确定如何限制Bulk Collect 的好方法是什么?

【问题讨论】:

  • 这是 Steven Feuerstein 在 Oracle 杂志上发表的一篇文章,地址为 BULK COLLECT and LIMIT。 Oracle 在内部使用 100 的限制将 Cursor FOR 循环转换为 BULK COLLECTS。

标签: oracle plsql bulk-collect


【解决方案1】:

与任何事情一样,最好的方法是对不同的选项进行基准测试。

但实际上,在绝大多数情况下,远高于 100 的限制并没有任何明显的好处。限制为 100 时,您消除了 99% 的上下文转换。剩下的 1% 的上下文转换占代码执行时间的相当大一部分是相对不太可能的。进一步减少上下文转换可能对性能没有任何帮助,只会让您使用更有价值的 PGA 内存。

【讨论】:

  • 说实话,我不知道 LIMIT 的大小。 10、100、1000、10000?我现在有了一些看法。您能否在基准测试方面为我指明正确的方向?
  • @Robotron - 就像你对任何东西进行基准测试一样。根据您想要获得的复杂程度,它可以是使用一堆线程进行全面的负载测试到一个简单的单用户 SQL*Plus 会话之间的任何地方,您可以在其中测量两个调用的经过时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多