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

问题描述 投票:0回答:1

这是我的应用程序的基本轮廓(它连接到SQlLite DB):

  1. 它扫描目录,并创建一个需要读取的8-15个不同平面文件的列表。

  2. 它标识平面文件,并根据文件扩展名选择通用的准备好的语句。

  3. 然后逐行读取平面文件,并将准备好的语句与已设置为字符串的字符串相加。每1,000条语句执行一次批处理。一些有问题的文件有200,000行需要读取。

  4. 一旦所有文件都已插入数据库中(每种文件类型都有一个不同的表),程序会将每个表的特定列更新为一个公共值。

  5. 程序为每种文件类型创建一个新文件,并将数据库中的信息提取到新文件中。

当前,在具有大约9个非常小的文件(少于50行)和一个非常大的文件(超过200,000行)的目录上运行大约需要1.5分钟。我希望能更快地得到它。

一些首要问题:

  1. 我应该关闭并打开程序每个部分的数据库连接(加载,更新,提取),还是保持连接打开并将其传递给每个不同的方法。

  2. 在处理每个文件之后,我应该关闭准备好的语句吗?还是只是在每个文件之后清除参数,然后在方法结束时关闭它(基本上是在加载所有作业之后)?

我对我应该集中精力于最大程度地提高此应用程序性能的其他事情感兴趣。

谢谢。

java jdbc sqlitejdbc
1个回答
0
投票

我将接下来的事情作为第一步:1)使用JDBC连接池,例如DBCP2)拆分作业,该作业在单独的线程中读取文件并将数据推送到DB,以便一个线程处理一个文件并将已完成的标志写入一个表3)逆向过程也是如此

打开/关闭连接是一项昂贵的操作-因此您应该打开一次,然后在所有操作完成后关闭。语句也一样。 Prepared语句(以及其他语句)-由JDBC驱动程序编译的语句,可提高其执行性能;您只需在开始时创建一次,然后在完成所有工作后关闭即可。

© www.soinside.com 2019 - 2024. All rights reserved.