各位大大请帮忙!
    小弟用sql loder导入数据,没有索引,
目前速度是:20W条记录在30秒左右,
请问有没有办法进一步优化,如sqlloader参数,内存设置,缓存设置等?
有知道sql loader流程细节的,请指教一下!

解决方案 »

  1.   

    sqlloader与磁盘IO性能强相关,系统IO性能越好,LOAD效率越高。建议从存储,数据缓冲块,RAID划分上考虑。SQLLOADER能加快性能的就一direct=ture,另外不要太多的错单,尽量少的LOAD字段和避免在LOADER中使用过多的函数。
      

  2.   

    20W条记录在30秒 load 完。 也挺快的。你又不是天 loadload 时,你去接杯水 。 回来就完了。 着急干吗。
      

  3.   

    Loader性能我个人理解以下几点需要注意: 1.定长度文件比变长度的文件速度快。 
    2.字节切分的比分隔符切分的速度快。 
    3.导入时尽量不要做多余的运算。 
    4.文本格式导入优于其他格式导入。 
    5.根据数据库状况适当调整提交频度。 
    6.只导入数据,表关系以后再说。 我也就知道这些了。
      

  4.   

    实际上这个速度已经相当快了。 指定direct path load是可以加快性能,具体你可以看oracle的文档中Utilities关于sql*Loader部分 P299.
      

  5.   


    这个速度应该是满意的。优化的话主要集中在IO上,可以用append的模式。
      

  6.   

    你有空看看oracle 白皮书 oracle database utility,里面都讲的非常详细和透册,用心学习吧
      

  7.   

    可以考虑parallel, 不过空间上会浪费很多. 如果你是DW那可能FTS比较多,会产生没必要的IO.当然你也可以load完之后再recreate ......
      

  8.   

    关键是buffer也要比较大点,另外,IO能力肯定是要强的.我load 4500万用了249秒.
    机器比较差了,HP rp34408G MEM存储我倒是忘了.
      

  9.   

    这些参数设置了吗?direct=trueunrecoverable
      

  10.   

     PARALLEL=TRUE 这个参数在多CPU和磁盘I/O丰富的机器上,能大大加快提取速度
      

  11.   

    并行会使的的segments变得非常之大,性能和空间上要有一个取舍.