公司最近在一些项目中需要与其它公司进行数据对接,以及公司自身的系统升级,需要把上T的数据移植到新系统中。
考虑过用 DTS,与IBM的data工具,但是对于这种业务逻辑过多的处理情况下,并不好实现。
所以我采用java来做。
不过java面临几大问题:
1,JDBC性能有限, 正常情况下(数据库服务器都有业务请求),jdbc批处理一秒最多200条数据, 在晚上没有业务请求时,可达到 3-500,是已经是最快了。
2,随便一个表的数据都在亿行,除去中间转换,如果照这个中间速度300行,导1亿行数据需要。1亿/300 秒,
大概要,100个小时,5天才能搞完一个表。
3,根据以前对多线程的了解,打算使用以前的框架来做, 如果能开上 100个线程,这样1亿行数据就可以,1小时搞定。如果能开 500线程就10分钟可以搞定一个表。呵呵,理想中是这样...
能想到就能做到,在后面的开发过程中,普通PC开发机器上1G内存,
程序正常在JVM分配 512M内存下,可开启200线程。
20几分钟,就完成1亿数据的转移。