2014-09-25 59 views
0

在我的項目中,我正在生成報告。這涉及來自數據庫的巨大數據傳輸。使用多線程程序通過Java從數據庫讀取大量數據集

邏輯就像用戶會給出一定的標準,首先我們會從db中獲取父項。可能有100000個父項。不僅如此,在獲取這些項後我們正在收集這個父項的子項和有詳細的細節。所有收集這個父母和孩子的信息,我們把一個響應xml。

小記錄沒問題。但是對於大量記錄來說,它需要更多的時間。我們使用一個工具作爲後端系統。它存儲記錄。它有自己的查詢集,所以查詢優化不起作用。所有我們必須用java來完成。

團隊中的任何人都可以提供一些想法來優化這一點。

+1

您打算如何改進?系統中存在哪些瓶頸?如果磁盤系統速度慢,多線程可能無法提高速度如果您使用多個數據庫,多線程併發訪問到數據庫可能會大大提高速度,這一切都取決於您的系統的結構和部件,數據庫,網絡,磁盤等字符。 – 2014-09-25 10:05:25

+0

您真的需要看速度限制步驟。從閱讀你發佈的內容來看,這有點難以言表。最慢的是哪一步?查詢?創建XML? java處理?通過網絡傳輸? – 2014-09-25 10:05:32

+0

謝謝,我已經檢查過它正在採取的時間。當我們收集父母的信息時,它並沒有花費太多時間。但是當我們收集每個父母對象的子項詳細信息時,需要時間。 – 2014-09-25 10:30:04

回答

0

不是一個真正的真實的答案,但過長評論

您必須基準的不同步驟:

  1. 數據庫 - 時間選擇提取所有記錄(父母+孩子的)直接對數據庫(假設它是一個簡單的數據庫)
  2. 網絡 - 時間轉移的整個記錄​​的近似大小。
  3. 處理 - 結果存儲在本地文件和時間處理從本地文件讀取(你也必須及時知道用來從磁盤讀取時刻的文件的副本

多線程只會幫助,如果瓶頸正在處理中

相關問題