【发布时间】:2015-03-15 21:57:26
【问题描述】:
假设程序 A 计算了 1000 个数字,并希望程序 B 为每个数字运行,程序 B 做一些事情。
解决方案一:procedure A call procedure B 1000 次换号码
解决方案:过程A 将数字保存在中间表中,然后过程B 读取数字
解决方案一个成本是调用程序B 1000 次,解决方案的成本是插入 1000 个数字(一行中的每个数字)并读取(选择)1000 个数字。
我想知道使用plsql哪个性能更好?
【问题讨论】:
-
基本上,您正在考虑使用 queue 而不是直接调用。显然,前者有额外的开销。但是您的示例未详细说明:A 和 B(以及 B 的几个实例)可以并行运行吗?与 B 相比,生成数字的成本如何? A 和 B 是否具有可以通过并行运行以某种方式利用的“等待状态”?在“失败”的情况下,A 和 B 应该如何表现?
-
B 的几个实例不能并行运行,我不明白你问题的第二部分。
-
对于您的“中间表”,您是考虑使用普通表、全局临时表还是 PL/SQL 表(集合)?每个人的开销都会大不相同。
-
我在想用普通的桌子
-
@jalalrasooly - 这将是最昂贵的选择。我建议你调查一下PL/SQL collections。
标签: performance plsql oracle11g