【问题标题】:which solution is better as performance in oracle? [closed]哪个解决方案在 oracle 中的性能更好? [关闭]
【发布时间】: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


【解决方案1】:

以您的示例并将这些作为选项,我会选择选项二。简单地说,我们不能循环并调用另一个过程 1000 次,而是写入和读取更有效。在维护方面,过程 B 中的任何故障都不会保证在过程 A 上再次运行,您可以简单地重新启动第二部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2022-08-08
    相关资源
    最近更新 更多