利用SQL Loader进行大量数据的导入,发现数据导入的效率不甚稳定,甚至差别很大,想问问有没有人知道可能影响到导入效率的原因?随便贴几个日志SQL Loader的日志:跳过的逻辑记录总数:          0
读取的逻辑记录总数:         88692
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0从 星期五 12月 23 15:02:32 2011 开始运行
在 星期五 12月 23 15:11:46 2011 处运行结束经过时间为: 00: 09: 14.50
CPU 时间为: 00: 00: 01.39
这个典型的慢的不正常。跳过的逻辑记录总数:          0
读取的逻辑记录总数:        937100
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0从 星期五 12月 23 16:15:38 2011 开始运行
在 星期五 12月 23 16:26:49 2011 处运行结束经过时间为: 00: 11: 11.80
CPU 时间为: 00: 00: 18.32
这个马马虎虎还过得去跳过的逻辑记录总数:          0
读取的逻辑记录总数:          4927
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0从 星期五 12月 23 15:15:06 2011 开始运行
在 星期五 12月 23 15:21:18 2011 处运行结束经过时间为: 00: 06: 11.88
CPU 时间为: 00: 00: 00.16
这个慢的有点过分了跳过的逻辑记录总数:          0
读取的逻辑记录总数:          6798
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0从 星期五 12月 23 15:11:46 2011 开始运行
在 星期五 12月 23 15:11:55 2011 处运行结束经过时间为: 00: 00: 08.78
CPU 时间为: 00: 00: 00.09
这样才算正常嘛

解决方案 »

  1.   


    不排除有别的应用读取数据,但是SQL Loader使用的并行方式导入的。另外就是数据库查询我觉得基本上是平均分布的,肯定没有别的应用对这些表进行锁定。正常应用的访问对导入效率的影响有这么大吗?
    如果真的是这个的影响,那么怎样才能评估对导入效率的影响到底能达到什么样的级别?
    如果把导入文件的大包拆成小包,是不是有可能能减少这个影响呢顺便再贴个夸张的:跳过的逻辑记录总数:          0
    读取的逻辑记录总数:       1024647
    拒绝的逻辑记录总数:          0
    废弃的逻辑记录总数:        0从 星期四 12月 15 12:08:10 2011 开始运行
    在 星期四 12月 15 12:11:11 2011 处运行结束经过时间为: 00: 03: 01.41
    CPU 时间为: 00: 00: 16.72
      

  2.   

    很明显,CPU时间与经过时间相差很大,有其它的作业占用了大量的CPU时间。
      

  3.   


    这是我困扰的地方,系统服务器总共8个内核,除了一个内核有作业以外,其他核的CPU使用率基本上都是0
      

  4.   

    有其它的作业占用了大量的CPU时间吧
      

  5.   


    CPU基本上完全空闲,8个核只有一个核有负载
      

  6.   


    这几个都不是问题,数据库文件在插入过程中是不允许自动扩大容量的。
    另外说明的一点是:数据库里面的数据确实已经很大大,大概在几十亿条,单表大概在几千万条的级别。
    数据库表有索引。
    sqlload采用的是parallel方式导入。