1、问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考)

答: Oracle有自己的锁机制。就算你开100条线,它还是一条一条删除。不能同时删除多项的。
     对于大量数据更新,Oracle有建议一些优化措施。
     (1) 首先是把auto-commit给关闭。因为你每删一条数据,oracle就要自动执行一次commit。commit是需要资源的。所以如果你手动设置为每删数据1000条,执行一次commit. 那你就可以节省资源了。
     (2) 充分利用batch update。如果不用batch,每个delete命令都需要从网络上传送到oracle。1万个删除命令,要有1万次传送。如果将100个删除命令绑在一起送去Oracle执行。那就只要传送100次就可以了。大大缩短所需时间和网络资源。
     以上这些建议,都可以在Oracle参考里查到。

2、问:oracle中什么操作需要commit才能保存到数据库?(以下答案来自网络,仅供参考)

答:平时用的时候Commit、Rollback 主要用在DML(数据操纵语言) - Insert、Update、Delete 这些语句上,可以设置保存点,然后依次提交,同样也可以rollback。单独commit,是把之前的数据改动都一次提交。正常的关闭,exit是可以自动提交的,可以不用commit,直接关闭窗口,属于强制关闭,关闭之前需要commit。

3、问:jdbc 批处理插入数据库 每100条提交一次,有余数时如何解决?(以下答案来自网络,仅供参考)

答:

String sql="insert into t1(id) values (?)";
Connection con=null;
PreparedStatement ps=null;

con= dao.getConnection();
ps=con.prepareStatement(sql);

ps.addBatch();


if(i%100==0)//每100条提交一次
{
ps.executeBatch();
con.commit();
ps.clearBatch();
}
改成
if(i%100==0||i==(list.size()-1)){
ps.executeBatch();
con.commit();
ps.clearBatch();
}

4、通过测试得到的:(来自网络,仅供参考)

(1)、批处理要conn.setAutoCommit(false)(默认会自动提交,不能达到批处理的目的,速度极慢!)。
     (2)、pstmt.executeBatch();    //PreparedStatement pstmt
                conn.commit();
        要提交,数据库才会有数据。
     (3)、避免内存溢出,应每x(如:万)条提交一次数据。
     (4)、可用“数据库名.表名”的方法来访问数据库表
        这样,则在写JdbcUtil的DB_CONNECTION = "jdbc:mysql://localhost:3306/"时,
        可不具体到数据库,方便跨数据库的数据操作。
     (5)、Statement和PrepareStatement不仅可以操作DDL,添加删除表和数据库的sql都可以操作,用execute(String sql)方法。

5、conn.setAutoCommit(true)和(false)的区别:(来自网络,仅供参考)

JDBC中的这个参数

true:sql命令的提交(commit)由驱动程序负责
false:sql命令的提交由应用程序负责,程序必须调用commit或者rollback方法

通过jdbc对数据库进行操作的时候,conn.commit(),可以将修改的数据提交,但是前提必须是数据库的autocommit属性为false,否则你进行一次操作后,数据库会自行commit。
6、为什么采用批处理的方式后,没有写conn.commit()也能提交?
答:这样可能是程序结束conn关闭导致的提交 conn.setAutoCommit(true)是控制是否每条SQL执行完后自动提交。

7、(一)
1.java程序循环执行10000条sql语句,不commit,共耗时13.395s;sql*plus可以查询的到;重启sql*plus

依然可以查询得到。
2.在sql*plus中执行删除表中内容 delete from "TAB_orderDetail"(没有commit);然后再在此次的

sql*plus中查询,记录数为0;但用java查询数据并没有被删除,还能查得到。但重启sql*plus,记录数仍

为10000。这都是由于在sql*plus中执行删除表中内容时没有commit造成的。
3.在java中执行删除表中内容 delete from "TAB_orderDetail"(没有commit),在java中再查询结果为0

;在sql*plus中查询结果也为0.(说明此时已经真正删除)
(二)
1、java程序循环执行10000条插入sql语句,不commit,共耗时7.652s。java程序循环执行10000条sql语句

,commit,共耗时7.595s。改为批处理后,批处理插入100000条记录,用时52.867s;批处理插入10000条记录,用时5.337s。

 

用JDBC访问ORACLE数据库 关于commit 增快效率 大数据 等的整理的更多相关文章

  1. JDBC连接Oracle数据库的问题

    场景:最近做一个java web项目,使用jdbc连接Oracle数据库,遇到了两个问题. 问题1:jdbc连接不上Ubuntu Oracle服务器? 后来发现这个问题的原因是由于连接字符串写错了,修 ...

  2. 【方法】如何限定IP访问Oracle数据库

    [方法]如何限定IP访问Oracle数据库 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...

  3. JAVA通过JDBC连接Oracle数据库详解【转载】

    JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...

  4. .net(C#)访问Oracle数据库的几种免安装组件的对比

    Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...

  5. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  6. .net(C#)访问Oracle数据库的几种免安装组件的对比(转)

    原文地址 [内容为转载,个人推荐还是用官方的组件,推荐使用 Oracle.DataAccess.dll ] .net(C#)编程过程中,使用到了以下三种免安装的Oracle访问组件,能够不安装Orac ...

  7. 运行于64操作系统上的C#客户端通过WCF访问Oracle数据库不兼容问题

    运行平台: Windows 7  64位操作系统 运行环境: IIS 7 编程语言:C# 数据库: 32位的Oracle 10g 运行原因:64位操作系统C#客户端程序通过WCF访问ORACLE数据库 ...

  8. 在Eclipse中使用JDBC访问MySQL数据库的配置方法

    在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据 ...

  9. ODP.NET 之访问 Oracle 数据库

    ODP.NET 之访问 Oracle 数据库 要相使用 Oracle Data Provider For .NET(ODP.NET), 必须先安装 ODP.NET 或者是 ODAC(Oracle Da ...

随机推荐

  1. 【WS-Federation】到底有多少公司在用WS-Federation

    到底有多少公司在用WS-Federation? sso先调用一个登录接口 获取一个token 然后再调用各种业务接口 如果是ssl token 直接暴露就行了 没有ssl 最好每次取一个token, ...

  2. mybatis从dao传入多个参数到sqlmap时dao中要使用map或实例对象(如:user)作为参数传入, 否则报错找不到属性getter方法

    23:37 2015-07-02 注意1. 使用mybaits的resultMap查询时, 如果想传入多个参数(比如where 1=1动态多条件查询时)sqlmap文件中对应的方法中, selectL ...

  3. MyEcpilise引入Maven项目目录不正常,无JRE,无Maven Dependencies

    右键项目--> Maven4MyEclipse --> Update Project Configuration

  4. iOS百度地图路径规划和POI检索详细总结-b

    路径规划.png 百度地图的使用 百度地图API的导入网上说了许多坑,不过我遇到的比较少,这里就放两个比较常见的吧.坑一: 奥联WIFI_xcodeproj.png 如上图所示,在infoplist里 ...

  5. Android Studio 单刷《第一行代码》系列 03 —— Activity 基础

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  6. linux驱动系列之arm汇编

    在arm平台学习linux时,会遇到arm汇编指令,arm汇编指令与8086汇编指令很多地方都不同,在此记下来以免后面忘了,同时在学习了汇编指令之后分析一些汇编指令编写的代码. 一.相对跳转指令b.b ...

  7. kindeditor-4.1.10 结合 Asp.Net MVC 添加图片功能

    KindEditor是一套开源的HTML可视化编辑器,现在我要结合Asp.Net MVC4 上传图片功能,做相应的配置和修改, 其实网上也有人写过类似的文章了,我写出来是以防以后使用的时候出现这样的问 ...

  8. Myeclipse 2013 professional 破解,下载

    昨天重装了系统,今天重新搭建开发环境,就顺便把Myeclipse升级到了2013,点击下载Myeclipse2013.惯例,需要破解Myeclipse2013,不过我发现我之前的破解Myeclipse ...

  9. bnu 4358 左手定则 (搜索)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4358 [题意]:给定起始位置和方向和目的地,按照左转.前进.右转.后退的优先级递减,也就是说能左转就 ...

  10. python 读写 Excel文件

    最近用python处理一个小项目,其中涉及到对excel的读写操作,通过查资料及实践做了一下总结,以便以后用. python读写excel文件要用到两个库:xlrd和xlwt,首先下载安装这两个库. ...