2012-05-13 59 views
0

我想建立一個使用Java和MySQL 5.1.63 GA的系統,其中有一些輸入表和一些輸出表在數據庫中。
要填充輸出表,我寫了一個過程,它將從servlet中調用,並在最終填充輸出表之前生成大量中間表。有很多的計算,可能需要一段時間,甚至一分鐘。轉儲到數據庫的計算

輸入和輸出表使用user_id進行操作,但中間表僅包含值列。

但我有以下的憂慮:
1)如果兩個用戶觸發計算順序一次發生的事情,我怎麼能保護中間表?

2)我可以使用任何其他技術,如臨時表等?

+1

你提到的MySQL 5.3 - 這是一個不存在的版本(至少沒有正式),你提到你使用和PL/SQL--這是Oracle數據庫的過程語言。這很混亂。 –

+0

抱歉抱怨。編輯了這個問題。謝謝。 – sachin

回答

1

隔離每個用戶的方法是在臨時表中完成所有中間計算。根據MySQL文檔:

TEMPORARY表僅對當前連接可見,並且在連接關閉時自動刪除。這意味着兩個不同的連接可以使用相同的臨時表名稱而不會相互衝突,也不會使用同名的現有非TEMPORARY表衝突。

只要輸入和輸出表都是由user_id分隔的,你應該沒問題。

更改您的代碼以使用臨時表可能相當容易。大多數時候,所有你需要做的就是這個詞TEMPORARY添加到您的CREATE TABLE聲明是這樣的:

CREATE TEMPORARY TABLE foo [...]