2009-09-25 78 views
0

該應用程序位於.Net 3.5和Oracle標準版11G數據庫,其中一個表有超過200萬條記錄。創紀錄的規模並不大。記錄具有類型爲Char(1)的「狀態」列。根據進程選擇要處理的記錄的狀態並在完成後更新狀態。 A記錄經由串行順序多個進程前進,即,A - >乙 - 「ç.....的處理是假設作爲Windows服務在單獨的機器上運行一個排隊解決方案通過多個進程處理記錄

簡單的解決方案是所有的進程中運行每10分鐘,並查詢表格中相應狀態的記錄。有15個並行的多個進程來檢查特定狀態。這可能不是一個有效的解決方案。沒有問題的過程之間有點時間滯後。

我正在考慮另一種方法是定義一個隊列爲每一個過程。一旦進程結束,它將記錄添加到下一個隊列中。我可以在這裏使用Oracle隊列。

你認爲哪一個選項是此方案更好?該解決方案不應該影響數據庫的性能,因爲網站也在數據庫上運行並訪問同一個表。還有其他更好的方法嗎? .Net Workflow框架適合在這裏提供開發緩解嗎?

回答

1

聽起來像,這是在沒有用戶交互,在這種情況下最高效的解決方案將是100%的PL/SQL沒有Net代碼的自動化批處理過程。它可以使用DBMS_SCHEDULER或DBMS_JOB來安排執行。

+0

用戶交互不存在,是的它是一個自動化的批處理過程。但是它不能是100%的PL/SQL,因爲進程需要調用外部web服務,創建文件,ftp文件等。我不確定PL/SQL是否可以處理所有這些。 – 2009-09-29 02:22:42