2011-05-08 75 views
2

我正在用JAVA編寫一個ETL項目。我將連接到源數據庫,只獲取一次數據,執行一些轉換並將數據加載到目標數據庫。我應該使用連接池嗎?

問題是我沒有多次連接到源或目標數據庫多次。我只連接一次(使用JDBC),獲取我需要的數據並關閉連接。

我還應該使用連接池嗎?

謝謝您的意見!

回答

5

連接池用於解決許多數據庫驅動程序需要很長時間才能創建連接的事實。如果您只需稍後使用它,然後放棄它,則如果需要多個連接,則開銷可能很大(時間和CPU)。重用比創建新的更快。

如果您沒有這種需求,如果您尚未建立連接池,則無需設置連接池。如果你碰巧有一個,那麼就使用它。

1

我的猜測是,在某些情況下,使用多個線程和併發連接可以提高軟件的覆蓋吞吐量,從而可以使用您的RDBMS服務器或客戶端ETL的所有CPU。這也可以幫助使用這樣的事實,即幾個表可以坐在不同的硬件上,因此可以並行訪問。

真正的影響將取決於您使用的計算機和數據庫的體系結構。

要小心,通常ETL有排序約束,同時做幾件事情不應違反這些約束。

編輯:這是一個例子。您可以配置Oracle以使用多個核心執行每個請求。 (取決於配置和許可證,如果我理解正確的話)。因此,如果允許一個請求只使用一個內核,則同時使用多個連接將同時允許多個請求,並更好地使用服務器的CPU資源。