高手: 用oracle 批量(几万条)插入数据,因为无法保证数据的可靠性,速度很慢,用commit ,速度一下就快了。有什么解决办法。

john6688 2003-04-20 04:44:01
高手:
用oracle 批量(几万条)插入数据(导库),因为无法保证数据的可靠性。所为很不稳定,速度很慢,就好象ora 在进行死循环一样,有时用commit ,速度一下就快了。(分析,因为设的有唯一索引,错误的记录 ora 会自动 rollback ,可能没有完成 rollback 就有新记录加入,所以象死循环一样)

有时一万条记录,用不了几秒,有时十条记录,却要用十几分钟,还不一定能插入进去。这是为什么,有什么好办法。

过程是:

(aa number in,
bb char in)

insert into lstable (aa,bb)
values (aa,bb)
commit;
...全文
317 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
john6688 2003-04-21
  • 打赏
  • 举报
回复
高手们,
我的意思是 插入成批数据不是很稳定,有时快,有时慢,(我分析是 commit 的问题),
但是不是,我不太清楚。
我想问,高手们有没有其它分析。
回滚段可能是其中的一种可能。9i 回滚段 手工设置十分麻烦,有没有别的方法。
graty 2003-04-21
  • 打赏
  • 举报
回复
在插入前,把索引、主键给删除, 插入完成后再建。
bird93 2003-04-21
  • 打赏
  • 举报
回复
每隔一定数量的insert后,做一次commit,
可以1000条提交一次
john6688 2003-04-21
  • 打赏
  • 举报
回复
可是我在过程中的最后,加入了 commit ,应该是一条一提交,那还会进入回滚段码?
我用的是 ora 9i ,系统自动设置回滚段.人工修改回滚段后,开机后,又回到了系统自动设置,怎么来处理呢?
yuaiwu 2003-04-21
  • 打赏
  • 举报
回复
加大回液段,并在事务中指定使用哪个RBS
hosia 2003-04-21
  • 打赏
  • 举报
回复
没有用commit的话,只有在你完全插入所有数据后自己手工来commit,这期间,你插入的数据都必须用到回滚段,数据量太大时会导致回滚段不够用,所以很慢。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧