终端可以处理这么大的数据量...已经测试了,现在是一秒分析出5000条记录,并且格式化成insert语句字符串,cpu利用率才20%左右,问题是数据入库,更本没办法!

解决方案 »

  1.   

    to  qiuyang_wang
      其实也不是一个客户端,应该属于一个后采采集分析程序,分析已经可以达到要求了,关键是数据入库
      

  2.   

    本地能够产生,这些数据(数据量不小)传输到服务器,服务器还要解释,够呛。
    要不你买个新服务器好了, IBM的大型设备  :)
      

  3.   

    to maohaisheng
     数据量是不小,是用dell 2600服务器,2cpu 2G mem 测试,主要是insert 操作来不及,而且要求数据的延迟不能太大,也就是分析出来后马上要求入库,一秒要进行5000个insert操作,oracle难道不支持么?
      

  4.   

    to zzzsssccc
      就算采用文本文件做中间,入库操作还是个问题,如果insert操作来得及,为何还要采用文本文件做中间了,本来就是从二进制文件种分析出来入库的,一小时2G的原始2进制文件,后台分析后入库,前台利用数据库结果进行业务呈现..
      

  5.   

    to  yuaiwu
     如果按二进制存储,是快很多,但是以后业务进行分析,统计查询时候怎么办?
      

  6.   

    数据先写入Buffer中,再入库,建议使用OCI
      

  7.   

    是否可以以文本文件做中间介质,再调用SQLLDR并行装载试试看?
      

  8.   

    “在insert 操作时总是忙不过来?“
    oracle报错了吗?可以多个进程并行插入。
      

  9.   

    最好用proc进行批量插入,按照你的配置,多起几个进程是能够办到的
      

  10.   

    你的需求太高了,这不是oracle的问题。你的表有250多列,5000行,你写一个几兆大小的文件到你的服务器上,看看多长时间。
    oracle 的速度再快,也不会超过硬件的性能极限。再说,ORACLE还要分析sql。
      

  11.   

    5000条纪录,500字段假设每字段10Bytes5000*500*10 = 25MB;转化为位则需要25*8=200M/s恐怕你的网络速度也跟不上吧?
      

  12.   

    用一些中间件吧,例如IBM MQ之类的,然后多用proc
      

  13.   

    多加两个cpu和多几块HDD也是好主意,还有Unix/Linux下的Oracle比Windows下的要强
      

  14.   

    用裸分区和disable datafile logging(小心了,风险比较大),减少Index,足够的db_block_buffer,合理的分区表可能也是个好主意 :-)另外一个严重的问题,这么低的机器,备份将是个麻烦事,如果你的系统是7*24的.good luck
      

  15.   

    这个问题看起来很麻烦,我们这边去年做的测试结果如下:
    IBM RS6000-S85, 24 CPU, 36G RAM,ORACLE 8.17
    每天倒入900万纪录,文本方式数据源,表字段数22个,4个VARCHAR2字段,其余全部是数字字段。操作采用20个进程:
    1、重建表,不带任何索引
    2、用SQLLDR倒入,10分钟之内完成,每分钟100万纪录
    3、重建索引(6个索引)用时35分钟左右这个结果是IBM和ORACLE的CONSULTANT做出来的,基本满足了我们的需求,就没有再进一步优化。以上情况大概是每秒1.3万纪录左右,而且不可能是长时间的操作,否则索引很难处理。采用楼主所说的硬件条件和操作流程,恐怕很难达到要求。
      

  16.   

    另外有一点,如果在UNIX环境下的话,分析操作系统文件最快的是使用PERL语言,我所说的例子中,我们还对源文件用PERL进行了处理(从行转化为纪录,从60万行纪录横式纪录转化为900万行竖式纪录),大约耗时10分钟。在这之前我们采用C和JAVA都无法做到这样的效率,效率大约只有PERL的百分之几。
      

  17.   

    使用SQLLDR 
    配合 direct  =y  + nologging   (不能做恢复)加快速的磁盘不确信最终能达到多少
      

  18.   

    结论,当前配置,用数据库方式绝对办不到,就算增加硬件配置,效果也不是很好,经过本人N天的测试和研究,发现利用Berkeley db (一种嵌入式数据库) 内存数据库,能够达到很好的效果,关键是SQL语法是不能用的了,自己要根据业务建立特定的操作  谢谢各位兄的,终于能解决问题了!
      哈哈大家都有分
      

  19.   

    The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB includes b+tree, queue, extended linear hashing, fixed, and variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++, Java, and Perl APIs. DB is available for a wide variety of UNIX platforms as well as Windows NT and Windows '95 (MSVC 4, 5 and 6).