在学习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 数据库的性能。该优化技术涉及到多个方面,包括分区、Direct Insert、并行和排序处理等。 分区是 Oracle 中的一种优化技术,可以将大型表分割成...
根据给定文件的信息,“Oracle插入大量数据”的主题围绕着几种有效的策略展开,旨在提升Oracle数据库在大数据量场景下的性能表现。 ### 高速存储设备的应用 首先提及的是采用高速的存储设备来提升读写能力。EMC和...
如果数据量巨大,可以考虑先将数据插入临时表或利用表分区功能,分批处理,然后再合并到目标表。 6. **调整初始化参数**: 优化数据库参数如`DB_FILE_MULTIBLOCK_READ_COUNT`和`LOB_CACHE_SIZE`,可以提升大字段...
此方法将大量数据一次性加载到PL/SQL表变量中,然后逐条插入。 七、文件导入 在实际操作中,可能需要从外部文件(如`.sql`文件)导入数据。比如`ts_code_20110316.sql`和`ts_msg_20110316.sql`这样的文件,通常包含...
通过优化这一过程,可以显著提升应用程序的性能,特别是在处理大量数据时。以下是对“java批量插入Oracle数据方法”的深入解析,包括代码示例及其背后的原理。 ### 一、Java批量插入Oracle数据方法概览 在Java中,...
在IT行业中,将Excel数据插入Oracle数据库是一项常见的任务,尤其对于数据分析、报表生成以及数据迁移等场景至关重要。本文将详细讲解如何实现这一过程,并探讨相关的技术细节和优化策略。 首先,我们需要了解Excel...
本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...
4. **调整排序缓冲区大小**:通过`ALTER SESSION SET SORT_AREA_SIZE`命令增大排序缓冲区的大小,可以提高数据插入和排序操作的效率,尤其是在执行大规模INSERT INTO...SELECT语句时。 5. **减少不必要的索引**:...
3. **FORALL**:在收集了大量数据后,可以使用FORALL语句一次性将它们插入到数据库中,避免了循环中的单次插入,提高了性能。 4. **绑定变量**:在Oracle中,绑定变量可以用来提高查询性能,减少解析次数。在批量...
### Oracle大数据量操作优化 在面对Oracle数据库中的大数据量操作时,如何有效地提升操作性能成为了一个重要的课题。本文将从不同角度出发,详细介绍如何通过多种技术手段和策略优化Oracle数据库的大数据量操作。 ...
总结来说,本文提出的Oracle数据存储优化方法主要是通过利用OCI接口和存储过程,结合优化的数据结构,实现对大量数据和并发用户场景下的高效存储,提升了系统的整体性能。对于开发和维护大型Oracle数据库系统的人来...
"OraExcel excel连接oracle插件 批量插入"这个主题聚焦在如何通过OraExcel插件实现Excel与Oracle数据库之间的高效交互,特别是批量数据插入的功能。 OraExcel插件是一款专门设计用于简化Excel与Oracle数据库间数据...
在数据库操作中,批量插入大量数据是常见的性能优化策略,特别是在大数据处理或系统初始化时。批量插入能够显著减少网络通信次数,提升效率,降低数据库事务的开销。本例展示了如何在4秒内高效地插入10万条数据,...
Oracle OCI(Oracle Call ...总之,Oracle OCI批量插入源代码是利用Oracle数据库接口实现高效数据导入的有效工具,对于处理大量数据的系统尤其重要。通过理解和应用这些代码,开发者可以优化数据库操作,提升系统性能。
在C#.NET中批量插入大量数据到数据库是一个常见的任务,特别是在处理诸如从Excel文件导入数据等场景时。这里,我们将探讨如何使用C#.NET高效地完成这个任务,并提供一个简单的示例来说明整个过程。 首先,我们需要...
通常,处理大量数据可能会导致内存溢出,但通过合理配置和优化,Kettle能够在不消耗过多系统资源的情况下完成任务。这可能涉及到设置合适的批处理大小、利用流式处理、或者在ETL过程中启用适当的内存管理选项,比如...
9. **参数调整**:Oracle数据库有大量可配置参数,DBA需要根据实际工作负载调整,如SGA(System Global Area)和PGA(Program Global Area)的大小,以优化性能。 10. **备份与恢复策略**:高效的备份策略可以减少...
总之,将Excel数据插入Oracle数据库涉及的关键技术点包括:Excel文件的读取(如使用pandas)、Oracle数据库的连接(如使用cx_Oracle)、SQL语句的构造和执行、以及事务管理和性能优化。通过熟练掌握这些技术,可以...
通过巧妙地组合Oracle内置的伪列、函数和递归查询方法,我们可以高效地生成大量结构化的测试数据,这对于优化数据库性能、进行数据建模和测试有着重要的作用。掌握了这一技能,无论是对于日常的数据库管理工作还是...
Oracle数据库在处理大数据量导入时,常常需要高效且可靠的方法,以确保数据的快速加载和系统的稳定运行。这篇博文“Oracle大数据量导入(CSV导入)”将深入探讨如何使用Oracle的各种工具和技术来导入CSV(逗号分隔值)...