2015-01-17 125 views
1

假定程序A計算了1000個號碼並且要爲程序B運行這個號碼和程序B做一些事情。
溶液之一:過程A呼叫過程B 1000次對數字
溶液絲束:過程A保存的數字在中間表,則過程B讀取的數字
溶液中的一種成本是調用過程B 1000倍和溶液絲束成本是插入1000個數字(每行數字)和讀取(選擇)1000個數字。 我想知道使用plsql哪種性能更好?哪個解決方案比oracle更好?

+2

基本上,您正在考慮使用_queue_而不是直接調用。顯然,前者有額外的開銷。但是您的示例沒有詳細說明:A和B(以及B的多個實例)是否可以並行運行?與B相比,生成數字的成本如何? A和B是否有可能以某種方式並行運行的「等待狀態」?在「失敗」的情況下應該如何表現A和B? –

+0

B的幾個實例不能並行運行,我不理解你的問題的第二部分。 –

+2

對於你的「中間表」,你是否想過使用普通表,全局臨時表或PL/SQL表(集合)?每個開銷都會有很大的不同。 –

回答

1

以您的示例爲例,我將選擇選項二。簡單地說,我們無法循環並調用另一個過程1000次,而寫和讀更有效率。在維護方面,程序B中的任何故障都不能保證程序A上的另一次運行,並且您可以簡單地重新啓動第二部分。

相關問題