Cai*_*der 16 java multithreading jdbc
我们公司有一个每天运行的批处理应用程序,它主要做一些数据库相关的工作,例如从文件导入数据到数据库表.
该应用程序中定义了20多个任务,每个任务可能依赖于其他任务.应用程序逐个执行任务,整个应用程序在单个线程中运行.
完成所有任务需要3~7个小时.我认为它太长了,所以我想也许我可以通过多线程提高性能.
我认为由于任务之间存在依赖关系,因此并行运行任务并不好(或者说并不容易),但也许我可以使用多线程来提高任务内部的性能.
例如:我们有一个定义为"ImportBizData"的任务,它将数据从数据文件复制到数据库表中(通常包含100,0000多行).我想知道是否值得使用多线程?
正如我对多线程知之甚少,我希望有人提供一些关于这个主题的教程链接.
Aar*_*lla 21
多线程将提高您的性能,但您需要了解以下几点:
commit偶尔上传,以避免累积大量回滚/撤消表.详细说明最后一点:目前,您有一个任务,它可以读取文件,解析它,打开JDBC连接,进行一些计算,将数据发送到数据库等.
你应该做什么:
第一个和最后一个线程非常慢,因为它们受I/O限制(硬盘速度慢,网络连接更糟).在数据库中插入数据是一项非常复杂的任务(分配空间,更新索引,检查外键)
使用不同的工作线程可以提供很多优势:
多线程可能有所帮助,如果线路不相关,您可以开始两个进程,一个读取偶数行,另一个不均匀的行,并从连接池(dbcp)获取数据库连接并分析性能.但首先我要调查jdbc是否是最好的方法,通常数据库已经为这样的导入优化了解决方案.这些解决方案还可以临时切换对表的约束检查,并在以后将其重新打开,这对性能也很有帮助.一如既往地视您的要求而定.
您也可以查看专为批处理设计的弹簧批量.
| 归档时间: |
|
| 查看次数: |
23214 次 |
| 最近记录: |