2012-08-23 20 views
1

我使用DB2 9.7.5 64位。服務器有足夠的內存但沒有集羣。db計算值得並行嗎?

我需要做大量的計算:在我的db中計算幾個(大約20)比率。其中一些可能需要長達25秒。

結果存儲在結果表中。

現在我有幾個解決方案(作爲一項政策,我們排除了Stored Proc)。

我從java客戶端每次調用一個比率,或者在多線程java客戶端中調用幾個比率。

我的假設是,從多線程調用是沒有用的,因爲我的db是瓶頸。但我並不完全確定數據庫引擎是否真正爲1個查詢提供了100%的CPU。我認爲引擎必須能夠在多個查詢之間共享其CPU能力。

我正在閱讀IBM Data Manual,但希望得到您的反饋。

非常感謝。

+0

我懷疑數據庫引擎可以給100%cpu。除非它的多線程性質,否則你應該這樣做 –

回答

0

我需要做大量的計算:在我的db中計算幾個(大約20)比率。其中一些可能需要長達25秒。

25秒不一定是壞事。也許它是一個美妙的結果,取決於你計算什麼

現在我有幾個解決方案(作爲一項政策,我們排除存儲過程)。

存儲過程不是邪惡的,你只需要知道如何使用它們安全地

我的假設是,這是沒用的,從線程多打電話,因爲我的數據庫是瓶頸。但我並不完全確定數據庫引擎是否真正爲1個查詢提供了100%的CPU。我認爲引擎必須能夠在多個查詢之間共享其CPU能力。

Java中的多線程永遠不會心(只要你保持線程安全),特別是在你的情況下,當你做了很多計算。 我不使用db2,所以我不知道它在多線程上有多好,但如果它的單線程我懷疑它會達到100%的CPU使用率。你應該檢查你的DB2的conf文件來tweek它一點點 又讀了一篇關於IBM DB2 clustering

我也建議使用data warehouse工具來分析你的腳本性能againest的DB2

好運

+1

鑑於DB2(幾乎所有版本)都被編寫爲運行在至少擁有_dozens_內核的企業硬件(大型機......)上,它可以處理事情多線程。有一些場景需要注意,與Java相同,但OP應該沒問題。 –

0

看看Materialized Query Tables。如果您正在使用的是報告功能,尤其是不需要絕對最新的信息,則可以設置MQT,其中包含計算時間較長的部分,例如每小時的版本。