我有一個Web服務(JAX-RS/Spring),它可以生成針對Oracle中臨時表運行的SQL查詢。然後將數據存檔到另一個表格(通過3個MERGE語句)。每個「作業」(查詢和合並)的執行都是通過JMS代理(ActiveMQ)在後臺完成的。每個作業的操作順序如下:優化數據訪問層
insert/update into table Q (select from table F) -- done between 4 and 20 times
merge into table P (select from table Q) -- twice
merge into table P (select from table F)
merge into table P (select from table F)
create a view V as select from table P
(表Q是一張臨時表)。
當我派遣兩個或三個這樣的工作時,每個工作執行需要大約6-7分鐘。但是當我同時派遣多達15人的時候,這段時間延長了。
這是因爲所有這些進程都試圖插入/更新到臨時表Q?從而爭取資源?我應該注意哪些技術來優化這一點?例如,我想過爲表Q創建5或6個重複項,並且「負載均衡」是針對它們的數據訪問對象查詢。
感謝
+1不錯的答案,尤其是「不要猜」的建議 – DCookie 2010-09-09 20:58:28