我正在研究一個API來查詢數據庫服務器(在我的情況下是Oracle)來檢索大量的數據。 (這實際上是一個位於JDBC之上的圖層。)SQL連接生存期
我創建的API試圖儘可能限制將每個查詢信息加載到內存中。我的意思是我更喜歡迭代結果集並逐個處理返回的行,而不是在內存中加載每行並稍後處理它們。
但我想知道如果這是最好的做法,因爲它有一些問題:
- 在整個處理過程中的結果集保存,如果處理是,只要檢索數據,這意味着我的結果集將打開兩倍長
- 在我的處理循環中執行另一個查詢意味着在我已經使用另一個結果集的同時打開另一個結果集,但同時開始打開太多結果集可能不是一個好主意。
另一方面,它具有一定的優勢:
- 我從來沒有在內存中的數據結果集的多個行,因爲我的查詢往往返回100k左右的行,它可能值得。
- 由於我的框架主要基於函數式編程概念,所以我從不依賴同時存在於內存中的多行。
- 在數據庫引擎仍然返回其他行時返回的第一行開始處理是一個很好的性能提升。
在回答甘道夫,我添加了一些更多的信息:
- 我總是要處理整個結果集
- 我沒有做的任何行的聚集
我正在與主數據管理應用程序集成並檢索數據以驗證它們或使用多種不同格式(到ERP,到Web平臺等)導出它們。
「SQL server(Oracle)」是什麼意思? – Andomar 2009-05-27 13:24:19
試圖澄清,對於混淆感到抱歉 – 2009-05-27 13:43:21
衡量我們真正需要了解更多關於如何使用查詢結果的好處。你會一直處理整個結果集嗎?您是將每個結果的值相加,還是可以在數據庫中完成的任何其他聚合工作? – Gandalf 2009-05-27 17:34:12