根据实际的需要可能要往数据库中Insert进大量的数据(大概最多几十万)。
我目前的处理方法是用事务做,以100为单位提交。为了防止数据库中大量日志堆积导致程序跑死,我逢1000的倍数执行一次“dump tran with no log”虽然这样可以保证导入的功能实现,但是非常慢。大约10万条记录需要20多分钟。请教有什么好的处理方法可以提高处理速度?

解决方案 »

  1.   

    我认为速度主要跟你的数据库以及你用的控件中的缓存有关。
    比如在informix中用for insert 的游标来插入数据库的话,比直接循环insert快2-5倍。原因就是因为for insert的游标是通过缓存写入数据库的。还有如果有索引的话会比较慢,可以先drop掉。而且时间还与你的record size有关,如果size比较大,10万条20分钟也是有可能的。
    如果size比较小,20分钟的确有些慢,应该有优化的空间。