编程向数据库中大规模插值应注意的…

在进行类似数据仓库的相关处理时,有时需要短时间内向数据库中插入大量数据。经过数次实践,本人认为在编程时应注意一下问题:

1、如果程序中有大量数据库读写操作(尤其是写操作), 通过并行手段来缩短程序运行时间是不可行的。因为影响时间的主要因素是数据库的读写操作,并行的线程越多,处于等待状态的线程越多,线程还有可能占用了系统资源,影响数据库对系统资源的使用。这种方法并不能显著缩短程序运行时间。

2、在无法减少读写操作的情况下,在运行程序前应进行以下两步操作:(1) 停用写操作涉及到的数据库表中的约束和索引,以避免数据库为维护这些约束额外耗费时间。在程序执行完毕后,重启约束索引。(2) 读操作涉及到的查询条件一定要在数据库中维护对应的索引,缩短检索时间。如果一个索引涉及到的字段既是查询字段,也是数据插入字段,本人建议保留该索引。关于数据库约束停用、重启的操作见博文《Oracle约束的启用和停用》。

3、作为2中操作的替换行为,可以先不进行数据库写操作, 将需要写入数据库的内容写入CSV文件中(CSV中字段的分割应和数据库中的表对应)。待数据处理完成后,将CSV文件批量导入数据库中(在导入之前,也应先停用约束)。使用这种方法是,可适当并行处理,提高效率。数据批量导入见博文《oracle 批量导入csv文件》。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值