设计方案讨论:每日大批量新数据如何尽快入库 数据预先准备好,使用SQLLDR工具,你的要求就可以实现了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从数据量,及效率角度来说,进行数据库的合理优化,或者提高数据库机器配置就可以了首先数据库需要作优化,比如增加回滚段使用数组插入,vb/ado应该可以实现以时间作为分区条件,建立表分区,使用bitmap索引,提高大数据量的插入及查询避免重建索引 用sql loader我们现在做到了每分钟插入100万条纪录,份为12个streams 那么如何从program中启动sql loader呢? 通常大量数据的倒入是以批处理方式进行的,最容易的方式是使用操作的shell scripts来处理,比如在windows架构下可以用dos的批命令,大致的过程如下:1、准备数据,通常是平板文件2、在操作系统下直接调用SQLLDR,并把结果送到LOG文件中3、检察LOG文件中是否有错误,通常是通过搜索错误字符串(ORA-)的方式,UNIX下用GREP命令非常方便,DOS下自己编一个小程序来处理也不难。4、如果发现错误,给维护者发出警报,可以通过MAIL或者在数据库中做纪录。 sqlldr只是一种数组插入的方式而已sqlldr是使用array->stream->数据库 的方式来插入使用oci调用sqlldr相关函数,去除一些不必要的功能,你的程序会比sqlldr还快 大数据量的入库,用SQLLDR最好 利用SQLLOADER肯定没错,专为大批量插入来做的! 我觉得,这个问题,主要在于考虑性能的问题,因为数据库导入的这个程序,会定时地操作数据库,所以频度和数据量就是个要重点考虑的问题了。所以我觉得,应该有一个Service Server来处理数据插入的请求,这个Service server应该提供:1 接受模块:接受客户端的数据(以一定的格式),接受好了,马上存入消息对列中,并且通知客户端,ok。注意,并不要马上就去操作数据库。这是接受模块的主要工作。2 数据库存储:负责从对列中取出数据,并且插入数据库中,并且尽可能的协调资源争用。客户端程序,负责从那个时时系统中获得数据,并且加工,同服务通讯。接收数据的模块,应该可以是个一个多线程的应用,可以提高并发性。而数据库操作模块,应该保持一个线程,这样,会少很多争用资源的情况。在具体实现上,Web Service是一种选择,.net和WebLogic,Oracle Application Server等都可以快速构建Web Service;当然,自己开发一个也可以,就是要做很多工作。应用队列系统的好处,可以有效地协调响应,速度上可以提高很多。最重要的,“存储再处理”的原则,可以提高系统的可靠性,如果写数据库正好失败可以再作;系统突然断电,重启后,数据还在队列系统中。我的个人想法,欢迎大家讨论,指正。 oracle中一些概念的区别,紧急请oracle高手来帮忙 如何使用存储过程删除多个表 c#写的oracle操作类库,里面的方法要返回什么类型的值才能被c++程序使用呢 bfile的目录 update语句难题?????????????????????????马上结分!!!!!! oracle连接问题 在线等 怎么在ORACLE里根据数据库名查询可登陆用户名列表 [求助]怎样将文档导入ORACLE数据库? 怎样写语句把数据库的结构导入到txt文件里。或者导出一个备份文件? xmlType问题,有点急 Oracle for linux的管理 关于表导出的问题。
首先数据库需要作优化,比如增加回滚段使用数组插入,vb/ado应该可以实现以时间作为分区条件,建立表分区,使用bitmap索引,提高大数据量的插入及查询
避免重建索引
我们现在做到了每分钟插入100万条纪录,份为12个streams
1、准备数据,通常是平板文件
2、在操作系统下直接调用SQLLDR,并把结果送到LOG文件中
3、检察LOG文件中是否有错误,通常是通过搜索错误字符串(ORA-)的方式,UNIX下用GREP命令非常方便,DOS下自己编一个小程序来处理也不难。
4、如果发现错误,给维护者发出警报,可以通过MAIL或者在数据库中做纪录。
sqlldr是使用array->stream->数据库 的方式来插入使用oci调用sqlldr相关函数,
去除一些不必要的功能,你的程序会比sqlldr还快
1 接受模块:接受客户端的数据(以一定的格式),接受好了,马上存入消息对列中,并且通知客户端,ok。注意,并不要马上就去操作数据库。这是接受模块的主要工作。
2 数据库存储:负责从对列中取出数据,并且插入数据库中,并且尽可能的协调资源争用。客户端程序,负责从那个时时系统中获得数据,并且加工,同服务通讯。接收数据的模块,应该可以是个一个多线程的应用,可以提高并发性。而数据库操作模块,应该保持一个线程,这样,会少很多争用资源的情况。在具体实现上,Web Service是一种选择,.net和WebLogic,Oracle Application Server等都可以快速构建Web Service;当然,自己开发一个也可以,就是要做很多工作。
应用队列系统的好处,可以有效地协调响应,速度上可以提高很多。最重要的,“存储再处理”的原则,可以提高系统的可靠性,如果写数据库正好失败可以再作;系统突然断电,重启后,数据还在队列系统中。我的个人想法,欢迎大家讨论,指正。