最近在做一个项目,对数据的插入效率要求很高..比如每一秒就会有1000条数据需要插入数据库中。同时在插入数据时有大量的业务逻辑..比如对传入数据中字符的处理 截取等.主要是想知道 需要使用什么方式来提高插入数据的性能!jdbc 队列处理? 还是存储过程?或者还有其他好的方式

解决方案 »

  1.   

    建缓冲机制,判断完后放到临时表中,定期(比如5分钟)导入到正式表;
    或者校验转换完之后直接存成txt文件,定期(比如5分钟)用sql loader导进正式表。
    sql loader的效率比insert要高出很多
      

  2.   

    1. 使用多线程,在应用程序中将字符操作提前处理掉,简化oracle sql语句
    2. 采用批量提交,避免每一个数据操作一个commit动作
      

  3.   

    分次提交,使用preparestatement()的 batch方式,基本就达到你的要求了.
      

  4.   

    不知道是什么类的数据,每秒会有1K的数据插入?
    1. 尽量减轻数据库的负担,让数据库只做它自己擅长的数据存储和检索,在提交数据库前做相关的校验和处理工作;
    2. 一定要做缓存处理,先存放于内存(没有比这个速度更快的了),然后再批量提交数据库;
    如果这样还不够(oracle该扔了),那你就应该考虑不能只靠一台数据库来支撑你的业务,考虑分布式存储。不知道你们的系统中如何架构的,会同时有10000台客户端连接数据库?如果不能满足业务要求,应该重新考虑一下系统架构。