您的位置:首页 > 数据库

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

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

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

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

3、作为2中操作的替换行为,可以先不进行数据库写操作,将需要写入数据库的内容写入CSV文件中(CSV中字段的分割应和数据库中的表对应)。待数据处理完成后,将CSV文件批量导入数据库中(在导入之前,也应先停用约束)。使用这种方法是,可适当并行处理,提高效率。数据批量导入见博文《oracle
批量导入csv文件》。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: