持有界面等待,所以时间不能太长。且数据一入库则可能被用到,所以临时表恐怕不行。就看看单纯入库最高效率是多少。
现5k数据至少3s,感觉上10倍数据是否会增加10倍。求最高效的入库方法,对oracle不熟悉,目前方法prestatement , addbatch 求比这个更好的方法,谢谢
现5k数据至少3s,感觉上10倍数据是否会增加10倍。求最高效的入库方法,对oracle不熟悉,目前方法prestatement , addbatch 求比这个更好的方法,谢谢
解决方案 »
- 怎么从一个yyyy/mm/dd hh:mm:ss格式的日期里提取到yy/mm/dd这个格式
- 帮忙给看看
- RHEL5 下oracle 备份的相关问题求救????????????
- update: 无效的列索引
- 请教一个生成连续自增1主键问题
- 查询从第20条到第30条的记录
- 将数据库中一个用户下的所有东东复制到新用户
- 调试plsql的工具用什么好,再哪能找到?
- 关于row_number() over的问题
- linux7.3安装Oracle10客户端时,系统提示ERROR in writing to directory /tmp/OraInstll.....
- 多条记录筛选查询问题
- 将Oracle的某些表导出到mysql中
用Oracle SQL Loader加载入库
后想一想经测试,勉强能达到要求,有效。
就是addbatch也要控制提交记录数,每次1000
这跟服务器性能相关,如果你服务器内存足够大,应该可以提交条数多些。
这种需求本身标准方法也貌似没见到有什么解决方案。有不同需求的可以参考
http://www.dba-oracle.com/t_optimize_insert_sql_performance.htm
过两天结贴,再看看大虾们有没有好的处理方式的,预先一楼50分
你要插入的数据上是否有索引?是否有主键外键之类的约束?不能一概而论的。还有对磁盘空间的冗余是否心中有数?比方说,如果有索引,那么在批量插入的时候,你就需要将索引先删除再插入再建立索引。
如果空间足够,请加入提示/*+append*/ 直接分配空闲数据块,而不是从头检索。这是理论,实际操作用这个提示做 /*+append ordered no_index(test,idx_no)*/
支持,支持一楼;这样的一次插入5W,我们公司属于数据导入,在夜晚的时候进行,白天严格不让做的,否则别人还怎么操作,况且生产库上面你要是一次导入5W条记录是需要经过部门经理批准的,而且要写详细实施过程文档的;普通的客户在web客户端页面是不会一次性导入5w条记录的,目前没有见过这种需求,我猜猜楼主导入5W条记录的应该后台管理平台的维护人员吧,这样的话可以选个业务量少的时间段实行导入的,尽量不要在白天业务高峰期进行。不知道楼主公司是怎么规定的!说下,分享吧!
持有界面等待,且等待之后会马上使用数据,肯定只能用insert导入,否则在我上面提到的连接中方法倒是还有2种比insert快将近2/3;
to 9楼:
主外键索引的删除,我认为不太合适,如果表中已有大量数据,这个重建时间也是问题;
提到tip,虽然oracle有这个机制,但很少用,磁盘空间多少比例算合理?
to 10楼:
我说的5w属于最大情况,情况容忍,此就好说了哈^^
to 11楼:
我按照1楼之后,800ms左右基本可以搞定5k条,不知道你说的bulk insert又如何,没用过。