簡體   English   中英

如何使用我的應用程序提高 JDBC 性能

[英]How to improve JDBC performance with my application

這是我的應用程序的基本輪廓(連接到 SQLLite DB):

  1. 它掃描一個目錄並創建一個包含 8-15 個需要讀取的不同平面文件的列表。

  2. 它識別平面文件並根據文件擴展名選擇通用的准備好的語句。

  3. 然后它逐行讀取平面文件並添加准備好的語句,其中的字符串已設置為批處理。 每 1,000 條語句執行一次批處理。 一些有問題的文件有 200,000 行需要閱讀。

  4. 一旦所有文件都插入到數據庫中(每種文件類型都有一個不同的表),程序會將每個表的某個列更新為一個公共值。

  5. 程序為每種文件類型創建一個新文件,並將數據庫中的信息提取到新文件中。

目前,在一個包含大約 9 個非常小的文件(少於 50 行)和一個非常大的文件(超過 200,000 行)的目錄上運行大約需要 1.5 分鍾。 我希望能更快地做到這一點。

先問幾個問題:

  1. 我應該為程序的每個部分(加載、更新、提取)關閉並打開數據庫連接,還是保持連接打開並將其傳遞給每個不同的方法。

  2. 我應該在處理每個文件后關閉准備好的語句嗎? 或者只是清除每個文件后的參數並在方法結束時關閉它(基本上是在加載所有作業之后)?

我對任何其他關於我應該關注的事情的評論感興趣,以最大限度地提高此應用程序的性能。

謝謝。

我會以接下來的事情作為第一步:
1)像DBCP一樣使用JDBC連接池
2)拆分作業,在單獨的線程中讀取文件並將數據推送到數據庫,以便一個線程處理一個文件並將完成的標志寫入一張表
3)反向過程相同

打開/關閉連接是一項昂貴的操作 - 所以你應該打開它一次,並在所有事情完成后關閉。
聲明也一樣。 准備好的語句(除其他外) - 是 JDBC 驅動程序編譯的語句,可提高其執行性能; 您在開始時創建一次,並在所有工作完成后關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM