`
iceflywxt
  • 浏览: 11093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle大量数据插入优化

阅读更多
  在学习Oracle中,我们使用SQL和ODBC链接进行数据插入,单独插入少量数据时,没有问题。但是在插入大量数据时,就会出现异常,内存溢出错误。

  如何解决在进行大量数据插入时,java程序能够有效快速的进行数据处理。这就是数据库中性能优化的问题。

  为什么要进行性能优化。

  首先,在大量数据处理中 一般常规的方式会造成程序处理效率和时间低下。达不到产品上线要求。

  其次,没有性能优化在产品维护时也会出现很多错误,带来麻烦。

  如何进行性能优化。

  一般软件都会进行大量数据测试,对性能做个整体评估,然后找出最好的方法来编写需要的代码。

  同时再次进行测试达到最佳的性能点。

  对于Oracle大量数据插入的性能优化我们采用如下方法进行

  先采用常规方式编写代码,如在放入数据时就直接使用list接口方法进行。

  插入数据中不进行批处理使用。

  发现,在插入10万数据中 内存溢出,而且数据库使用时间非常长。

  于是,我们先采用数据库批处理命令 采用每1000条数据再进行一次提交

  使用addBAEACH 方法,和excutbeach 方法来处理

  代码为

  ps.addBatch();

  if(i!=0&&i%10000==0) {

  ps.executeBatch();

  con.commit();

  ps.clearBatch();

  }

Connection conn = getConnection();  
        PreparedStatement ps = null;  
        try {  
            conn.setAutoCommit(false);  
            ps = conn.prepareStatement("insert into t_user(username, password) values(?,?)");  
            Random r = new Random();  
            for(int i = 0; i < 1000; i++){  
                ps.setString(1, String.valueOf(r.nextInt(Integer.MAX_VALUE)));  
                ps.setString(2, String.valueOf(r.nextInt()));  
                ps.addBatch();//加入批处理  
                //ps.executeUpdate();不能与addBatch()同时用  
                  
            }  
            int[] results = ps.executeBatch();//执行批处理  
            conn.commit();  
        } catch (SQLException e) {  
            conn.rollback();  
            throw e;  
        }finally{  
            ps.close();  
            conn.close();  
        } 

  同时也使用预编译语句进行插入。

  但是在仍然不能解决虚拟机内存溢出问题

  于是我们使用

  String[] fileList = new File(uploadDir).list();

  ArrayList<String[]> array = new ArrayList<String[]>();

  array.clear();

  来解决读取文件后如何放入数据库中再使用SQL语句进行插入。

  经过反复测试。最后找到最优点。在插入100万数据情况下 每次1万条数据提交。性能最优。
分享到:
评论

相关推荐

    Oracle 大数据量操作性能优化

    Oracle大数据量操作性能优化是指在处理大量数据时,如何提高 Oracle 数据库的性能。该优化技术涉及到多个方面,包括分区、Direct Insert、并行和排序处理等。 分区是 Oracle 中的一种优化技术,可以将大型表分割成...

    Oracle插入大量数据

    根据给定文件的信息,“Oracle插入大量数据”的主题围绕着几种有效的策略展开,旨在提升Oracle数据库在大数据量场景下的性能表现。 ### 高速存储设备的应用 首先提及的是采用高速的存储设备来提升读写能力。EMC和...

    ORACLE数据库中插入大字段数据的解决方法

    如果数据量巨大,可以考虑先将数据插入临时表或利用表分区功能,分批处理,然后再合并到目标表。 6. **调整初始化参数**: 优化数据库参数如`DB_FILE_MULTIBLOCK_READ_COUNT`和`LOB_CACHE_SIZE`,可以提升大字段...

    oracle SQL 语句插入数据

    此方法将大量数据一次性加载到PL/SQL表变量中,然后逐条插入。 七、文件导入 在实际操作中,可能需要从外部文件(如`.sql`文件)导入数据。比如`ts_code_20110316.sql`和`ts_msg_20110316.sql`这样的文件,通常包含...

    java批量插入Oracle数据方法

    通过优化这一过程,可以显著提升应用程序的性能,特别是在处理大量数据时。以下是对“java批量插入Oracle数据方法”的深入解析,包括代码示例及其背后的原理。 ### 一、Java批量插入Oracle数据方法概览 在Java中,...

    将EXCEL数据 插入ORACLE数据库

    在IT行业中,将Excel数据插入Oracle数据库是一项常见的任务,尤其对于数据分析、报表生成以及数据迁移等场景至关重要。本文将详细讲解如何实现这一过程,并探讨相关的技术细节和优化策略。 首先,我们需要了解Excel...

    mybatis的oracle的批量插入优化和mybatis的generator自动生成三层文件

    本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...

    Oracle 大数据量操作优化.pdf

    4. **调整排序缓冲区大小**:通过`ALTER SESSION SET SORT_AREA_SIZE`命令增大排序缓冲区的大小,可以提高数据插入和排序操作的效率,尤其是在执行大规模INSERT INTO...SELECT语句时。 5. **减少不必要的索引**:...

    批量插入数据到Oracle数据库Demo

    3. **FORALL**:在收集了大量数据后,可以使用FORALL语句一次性将它们插入到数据库中,避免了循环中的单次插入,提高了性能。 4. **绑定变量**:在Oracle中,绑定变量可以用来提高查询性能,减少解析次数。在批量...

    Oracle 大数据量操作优化

    ### Oracle大数据量操作优化 在面对Oracle数据库中的大数据量操作时,如何有效地提升操作性能成为了一个重要的课题。本文将从不同角度出发,详细介绍如何通过多种技术手段和策略优化Oracle数据库的大数据量操作。 ...

    一种基于Oracle的数据存储优化方法.pdf

    总结来说,本文提出的Oracle数据存储优化方法主要是通过利用OCI接口和存储过程,结合优化的数据结构,实现对大量数据和并发用户场景下的高效存储,提升了系统的整体性能。对于开发和维护大型Oracle数据库系统的人来...

    OraExcel excel连接oracle插件 批量插入

    "OraExcel excel连接oracle插件 批量插入"这个主题聚焦在如何通过OraExcel插件实现Excel与Oracle数据库之间的高效交互,特别是批量数据插入的功能。 OraExcel插件是一款专门设计用于简化Excel与Oracle数据库间数据...

    批量插入大量数据

    在数据库操作中,批量插入大量数据是常见的性能优化策略,特别是在大数据处理或系统初始化时。批量插入能够显著减少网络通信次数,提升效率,降低数据库事务的开销。本例展示了如何在4秒内高效地插入10万条数据,...

    oracle oci 批量插入源代码

    Oracle OCI(Oracle Call ...总之,Oracle OCI批量插入源代码是利用Oracle数据库接口实现高效数据导入的有效工具,对于处理大量数据的系统尤其重要。通过理解和应用这些代码,开发者可以优化数据库操作,提升系统性能。

    C#.NET中如何批量插入大量数据到数据库中

    在C#.NET中批量插入大量数据到数据库是一个常见的任务,特别是在处理诸如从Excel文件导入数据等场景时。这里,我们将探讨如何使用C#.NET高效地完成这个任务,并提供一个简单的示例来说明整个过程。 首先,我们需要...

    Kettle生成1亿条数据导入oracle

    通常,处理大量数据可能会导致内存溢出,但通过合理配置和优化,Kettle能够在不消耗过多系统资源的情况下完成任务。这可能涉及到设置合适的批处理大小、利用流式处理、或者在ETL过程中启用适当的内存管理选项,比如...

    Oracle企业DBA性能优化

    9. **参数调整**:Oracle数据库有大量可配置参数,DBA需要根据实际工作负载调整,如SGA(System Global Area)和PGA(Program Global Area)的大小,以优化性能。 10. **备份与恢复策略**:高效的备份策略可以减少...

    Excel表的Oracle数据库插入工具

    总之,将Excel数据插入Oracle数据库涉及的关键技术点包括:Excel文件的读取(如使用pandas)、Oracle数据库的连接(如使用cx_Oracle)、SQL语句的构造和执行、以及事务管理和性能优化。通过熟练掌握这些技术,可以...

    Oracle中如何用一条SQL快速生成10万条测试数据

    通过巧妙地组合Oracle内置的伪列、函数和递归查询方法,我们可以高效地生成大量结构化的测试数据,这对于优化数据库性能、进行数据建模和测试有着重要的作用。掌握了这一技能,无论是对于日常的数据库管理工作还是...

    Oracle大数据量导入(CSV导入)

    Oracle数据库在处理大数据量导入时,常常需要高效且可靠的方法,以确保数据的快速加载和系统的稳定运行。这篇博文“Oracle大数据量导入(CSV导入)”将深入探讨如何使用Oracle的各种工具和技术来导入CSV(逗号分隔值)...

Global site tag (gtag.js) - Google Analytics