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

转 jdbc oracle many data insert

    博客分类:
  • java
阅读更多

2009-05-21
使用JDBC插入大量数据的性能测试
关键字: 性能测试

使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:

//1.使用statement插入100000条记录

 

public void exec(Connection conn){

  try {

   Long beginTime = System.currentTimeMillis();

   conn.setAutoCommit(false);//设置手动提交

   Statement st = conn.createStatement();

   for(int i=0;i<100000;i++){

    String sql="insert into t1(id) values ("+i+")";

    st.executeUpdate(sql);  

   }

   Long endTime = System.currentTimeMillis();

   System.out.println("st:"+(endTime-beginTime)/1000+"秒");//计算时间

   st.close();

   conn.close();

  } catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }  

 }

//2.使用PreparedStatement对象

public void exec2(Connection conn){

  try {

   Long beginTime = System.currentTimeMillis();

   conn.setAutoCommit(false);//手动提交

   PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");

   for(int i=0;i<100000;i++){

    pst.setInt(1, i);

    pst.execute();    

   }

   conn.commit();

   Long endTime = System.currentTimeMillis();

   System.out.println("pst:"+(endTime-beginTime)/1000+"秒");//计算时间

   pst.close();

   conn.close();

  } catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

 }

//3.使用PreparedStatement + 批处理

public void exec3(Connection conn){

  try {

   conn.setAutoCommit(false);

   Long beginTime = System.currentTimeMillis();

   PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");

   

   for(int i=1;i<=100000;i++){    

    pst.setInt(1, i);

    pst.addBatch();

    if(i%1000==0){//可以设置不同的大小;如50,100,500,1000等等

     pst.executeBatch();

     conn.commit();

     pst.clearBatch();

    }

   }

   Long endTime = System.currentTimeMillis();

   System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");

   pst.close();

   conn.close();

  } catch (SQLException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

 }

在Oracle 10g中测试,结果:

1.使用statement耗时142秒;

2.使用PreparedStatement耗时56秒;

3.使用PreparedStatement + 批处理耗时:

a.50条插入一次,耗时5秒;

b.100条插入一次,耗时2秒;

c.1000条以上插入一次,耗时1秒;

通过以上可以得出结论,在使用jdbc大批量插入数据时,明显使用第三种方式(PreparedStatement + 批处理)性能更优。

分享到:
评论

相关推荐

    Java连接数据库JDBCoracle

    Java连接数据库JDBCoracle

    jdbc oracle 10g

    JDBC驱动是连接Java应用程序和数据库的关键组件,对于Oracle 10g,我们需要的是Oracle JDBC驱动,通常称为ojdbc14.jar或更高版本。 安装Oracle JDBC驱动非常简单,只需将对应的jar文件添加到项目的类路径中。在Java...

    JDBC oracle 驱动程序包

    在"JDBC oracle 驱动程序包"中,`oracle11g驱动jar包`是针对Oracle 11g版本的JDBC驱动程序的Java类库文件。这个`.jar`文件包含了所有必要的类和方法,使得Java应用程序能够连接到Oracle 11g数据库,执行SQL查询,...

    jdbc--drivers.zip_ jdbc oracle_JDBC ORACLE_oracle

    标题中的"jdbc--drivers.zip_ jdbc oracle_JDBC ORACLE_oracle"表明这是一个关于JDBC驱动程序的压缩包,特别关注的是Oracle数据库的JDBC驱动。JDBC,全称Java Database Connectivity,是Java语言中用于与各种数据库...

    DataGrip连接Oracle的Driver连接.7z

    在DataGrip中,我们需要安装合适的**Oracle JDBC驱动**(也称为ojdbc)来建立与Oracle数据库的连接。 1. **Oracle JDBC驱动**:Oracle JDBC驱动是Java应用程序连接Oracle数据库的桥梁。通常,Oracle提供两种类型的...

    Jdbc连接oracle远程数据库中文乱码解决

    本文将深入探讨如何通过JDBC(Java Database Connectivity)连接Oracle远程数据库时,解决中文乱码的困扰。 首先,我们需要理解的是,中文乱码通常源于字符集不一致或配置不当。在Java应用中,数据在JVM(Java...

    jdbc-oracle.rar_JDBC ORACLE_java JDBC orac_java jdbc oracle_jdbc

    JDBC提供了一套规范,使得Java程序员可以使用统一的方法来访问数据库,包括Oracle数据库。Oracle是世界上最流行的商业关系型数据库管理系统之一,尤其在企业级应用中广泛应用。本资料包包含了一个使用Java JDBC连接...

    jdbc读写Oracle的CLOB字段

    JDBC读写Oracle的CLOB字段

    JAVA Oracle_JDBC

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    java jdbc oracle代码

    当我们谈论“Java JDBC Oracle代码”时,我们指的是使用Java的JDBC API来与Oracle数据库进行通信的程序。 在Java中,JDBC提供了以下核心概念: 1. **Driver Manager**: 这是JDBC的入口点,负责管理所有注册的...

    Oracle JDBC jar包下载

    Oracle JDBC驱动程序是Java开发者与Oracle数据库交互的重要工具,它提供了连接、查询和操作数据库的能力。在本篇文章中,我们将详细探讨Oracle JDBC驱动的不同版本,包括ojdbc6.jar、ojdbc7.jar、ojdbc8.jar、ojdbc...

    Oracle12C JDBC 驱动

    Oracle12C JDBC驱动是连接Java应用程序与Oracle数据库12c Release 2 (12.2.0.1) 的关键组件。JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java程序通过Java语言来访问和操作数据库。在...

    JAVA使用JDBC进行insert操作添加信息到数据库

    JAVA 使用 JDBC 进行 insert 操作添加信息到数据库 一、 JDBC 概述 JDBC(Java Database Connectivity)是一种 Java 应用程序用来与数据库进行交互的 API。它提供了一组标准的接口,允许 Java 应用程序与各种...

    oracle.jdbc.driver.oracledriver Oracle JDBC驱动包 ojdbc6

    Oracle JDBC驱动包是Oracle数据库与Java应用程序之间进行通信的关键组件,它使得Java程序员能够通过编写Java代码来操作Oracle数据库。标题中的"ojdbc6"指的是Oracle JDBC驱动的一个特定版本,适用于Java SE 6环境。...

    jdbc连接oracle字符集不同出现乱码

    ### JDBC 连接 Oracle 字符集不同导致乱码问题解析及解决方案 #### 问题背景 在使用 JDBC(Java Database Connectivity)连接 Oracle 数据库时,可能会遇到一个常见的问题:从远程 Oracle 数据库获取的数据出现乱码...

    Flink JDBC Connector 支持Oracle

    Flink JDBC Connector 支持Oracle , Flink 1.13.6 支持Oracle 11.2.0.4

    jdbcoracle(文件上传)

    这里我们关注的是`jdbcoracle(文件上传)`,这很可能是指使用JDBC(Java Database Connectivity)来操作Oracle数据库,并实现文件上传的功能。以下是对这个主题的详细阐述: JDBC是Java编程语言中用于与各种类型...

    JDBC连接oracle数据库测试

    在IT行业中,JDBC(Java Database Connectivity)是Java编程语言中用于访问数据库的标准API,而Oracle则是一款广泛应用的关系型数据库管理系统。"JDBC连接Oracle数据库测试"是一个关键的实践环节,确保应用程序能够...

    jdbcoracle(多国语言支持)

    《JDBC与Oracle的多国语言支持深度解析》 在当今全球化的背景下,软件系统必须具备多国语言支持,以满足不同国家和地区用户的使用需求。本文将深入探讨JDBC(Java Database Connectivity)与Oracle数据库在实现多国...

    jdbc oracle dirver.rar

    Oracle数据库是世界上最流行的商业数据库系统之一,而JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库交互的一套标准API。在Java应用程序中,使用JDBC Oracle Driver可以实现与Oracle数据库的...

Global site tag (gtag.js) - Google Analytics