编程向数据库中大规模插值应注意的…
2017-05-05 12:15
120 查看
在进行类似数据仓库的相关处理时,有时需要短时间内向数据库中插入大量数据。经过数次实践,本人认为在编程时应注意一下问题:
1、如果程序中有大量数据库读写操作(尤其是写操作),通过并行手段来缩短程序运行时间是不可行的。因为影响时间的主要因素是数据库的读写操作,并行的线程越多,处于等待状态的线程越多,线程还有可能占用了系统资源,影响数据库对系统资源的使用。这种方法并不能显著缩短程序运行时间。
2、在无法减少读写操作的情况下,在运行程序前应进行以下两步操作:(1)停用写操作涉及到的数据库表中的约束和索引,以避免数据库为维护这些约束额外耗费时间。在程序执行完毕后,重启约束索引。(2)读操作涉及到的查询条件一定要在数据库中维护对应的索引,缩短检索时间。如果一个索引涉及到的字段既是查询字段,也是数据插入字段,本人建议保留该索引。关于数据库约束停用、重启的操作见博文《Oracle约束的启用和停用》。
3、作为2中操作的替换行为,可以先不进行数据库写操作,将需要写入数据库的内容写入CSV文件中(CSV中字段的分割应和数据库中的表对应)。待数据处理完成后,将CSV文件批量导入数据库中(在导入之前,也应先停用约束)。使用这种方法是,可适当并行处理,提高效率。数据批量导入见博文《oracle
批量导入csv文件》。
1、如果程序中有大量数据库读写操作(尤其是写操作),通过并行手段来缩短程序运行时间是不可行的。因为影响时间的主要因素是数据库的读写操作,并行的线程越多,处于等待状态的线程越多,线程还有可能占用了系统资源,影响数据库对系统资源的使用。这种方法并不能显著缩短程序运行时间。
2、在无法减少读写操作的情况下,在运行程序前应进行以下两步操作:(1)停用写操作涉及到的数据库表中的约束和索引,以避免数据库为维护这些约束额外耗费时间。在程序执行完毕后,重启约束索引。(2)读操作涉及到的查询条件一定要在数据库中维护对应的索引,缩短检索时间。如果一个索引涉及到的字段既是查询字段,也是数据插入字段,本人建议保留该索引。关于数据库约束停用、重启的操作见博文《Oracle约束的启用和停用》。
3、作为2中操作的替换行为,可以先不进行数据库写操作,将需要写入数据库的内容写入CSV文件中(CSV中字段的分割应和数据库中的表对应)。待数据处理完成后,将CSV文件批量导入数据库中(在导入之前,也应先停用约束)。使用这种方法是,可适当并行处理,提高效率。数据批量导入见博文《oracle
批量导入csv文件》。
相关文章推荐
- 动态网页编程中优化数据库注意的十大原则
- 数据库编程时需要注意的两点!
- websphere数据库编程必须注意的问题
- 使用wamp环境进行数据库编程一定要注意端口问题~
- 代码开发:数据库编程,前台设计,后台编码,一些注意点
- 数据库编程应注意判断查询结果是否为null
- Java、XML与数据库编程实践(三)
- Java、XML与数据库编程实践
- Java、XML与数据库编程实践(四)
- 对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式
- 对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式
- 注意数据库操作中打开的连接
- 使用Oracle9i数据库的九大注意事项
- Java、XML与数据库编程实践(二)
- ADO.NET数据库编程
- [转帖]《高性能的数据库》第四讲 编程细节(下部分)
- C#编程-连接数据库的方法
- access 如何编程打开其他数据库中的窗体?
- [转帖]〈高性能的数据库〉第二讲 数据库编程
- 用Python实现数据库编程