java_JDBC(3)
Batch和Fetch两个特性非常重要。
Batch相当于JDBC的写缓冲,Fetch相当于读缓冲
如果把JDBC类比为JAVA IO的话,
不使用Fetch和Batch相当于直接使用FileInputStream和FileOutputStream
而设置了Fetch和Batch相当于使用BufferedInputStream和BufferedOutputStream
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Test {
    private static int _1W = 10000;
    private static List<String> list = new ArrayList<String>(100 * _1W);
    static {
        for (int i = 0; i < 10 * _1W; i++) {
            list.add(String.valueOf(i));
        }
    }
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        long start = System.currentTimeMillis();
        fetchRead();
        long end = System.currentTimeMillis();
        System.out.println((end - start) + "ms");
    }
    public static void batchWrite() throws SQLException, ClassNotFoundException {
        // 1108ms
        Class.forName("oracle.jdbc.OracleDriver");
        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");
        connection.setAutoCommit(false);
        PreparedStatement cmd = connection.prepareStatement("insert into t values(?)");
        for (int i = 0; i < list.size(); i++) {
            cmd.setString(1, list.get(i));
            cmd.addBatch();
            if (i % _1W == 0) {
                cmd.executeBatch();
            }
        }
        cmd.executeBatch();
        connection.commit();
    }
    public static void jdbcWrite() throws ClassNotFoundException, SQLException {
        // 28189ms
        Class.forName("oracle.jdbc.OracleDriver");
        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");
        connection.setAutoCommit(false);
        PreparedStatement cmd = connection.prepareStatement("insert into t values(?)");
        for (String s : list) {
            cmd.setString(1, s);
            cmd.execute();
        }
        connection.commit();
    }
    public static void jdbcRead() throws ClassNotFoundException, SQLException {
        // 3120ms
        Class.forName("oracle.jdbc.OracleDriver");
        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");
        connection.setAutoCommit(false);
        PreparedStatement cmd = connection.prepareStatement("select * from t");
        ResultSet rs = cmd.executeQuery();
        int i = 0;
        while (rs.next()) {
            rs.getString(1);
            i = i + 1;
        }
        System.out.println("count:" + i);
    }
    public static void fetchRead() throws ClassNotFoundException, SQLException {
        //764ms
        Class.forName("oracle.jdbc.OracleDriver");
        Connection connection = DriverManager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl", "xxx", "xxx");
        connection.setAutoCommit(false);
        PreparedStatement cmd = connection.prepareStatement("select * from t");
        cmd.setFetchSize(_1W);
        ResultSet rs = cmd.executeQuery();
        int i = 0;
        while (rs.next()) {
            rs.getString(1);
            i = i + 1;
        }
        System.out.println("count:" + i);
    }
} 
java_JDBC(3)的更多相关文章
- JAVA_JDBC
		测试类: 1 import java.util.ArrayList; import java.util.List; /** * 创建数据库: * 1.加载驱动 * Class.forName(&quo ... 
- java_JDBC(4)
		一.Statement import java.sql.*; public class TestJDBC { public static void main(String[] args) { Conn ... 
- java_JDBC字段对应
		地址: http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm ... 
- java_JDBC(2)
		1.Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement. 2.PreparedStatemen ... 
- java_JDBC(1)
		Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver";Class.forName(" ... 
- Java_JDBC一般写法
		JDBC是Java DataBase Connectivity,Java程序访问数据库的标准接口. 如果是maven工程先加入依赖的jar包: <dependency> <group ... 
- Java_JDBC连接数据库_使用读取配置文件的方式
		package com.homewoek3_4.dao; import java.io.IOException; import java.io.InputStream; import java.sql ... 
- Java_JDBC连接数据库
		package com.accp.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pre ... 
- Java_JDBC 连接
		今天,接着上一篇( mysql 数据库 )的基础上,我就写一下 Java 怎样连接数据库,并且操作数据库. 首先,我们先来准备一下数据库连接的驱动: mysql 的 jar 包下载地址:https:/ ... 
随机推荐
- Building Your First EDM
			1 文件--新建--项目 控制台应用程序,填写信息,确定: 2 在解决方案管理器中,选中AmyConsoleApp,添加新项, 选择ADO.NET 实体数据模型,添加: 3 在选择模型内容中选择“从数 ... 
- ShaderLab 之 UNITY_INITIALIZE_OUTPUT
			在 HLSLSupport.cginc 文件中定义了此宏: #if defined(UNITY_COMPILER_HLSL) #define UNITY_INITIALIZE_OUTPUT(type, ... 
- linux下JUCE源码编译依赖库
			JUCE 源码https://github.com/julianstorer/JUCE 想在ubuntu下编译需要提前安装以下依赖库 sudo apt-get install mesa-common- ... 
- 史上最坑的证书报错解决方法:Code=3000 "未找到应用程序的“aps-environment”的权利字符串"
			在ios注册远程通知获取设备令牌token的时候 // 注册远程通知获取设备令牌 toKen [[ UIApplication sharedApplication ] registerForRemot ... 
- Repeater绑定事件ItemDataBound中获取数据库中数据
			protected void rp1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemTyp ... 
- Java-设计模式-单例模式-饿汉模式、懒汉模式
			//-------------------------------------------------------------饿汉模式--开始----------------------------- ... 
- bzoj1396
			传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1396 题目大意: 题解:后缀自动机,只出现一次,那么就是right值为1,那么对于一段1-- ... 
- 在DataGrid中实现Button Command
			Command="{Binding butCommand}"会默认查找ListViewItems中对象的属性,而你的ListViewItems中对象应该不包括butCommand属 ... 
- 【蓝牙数据采集模块】-02-Sensor Controller 编写CC2650STK外设驱动
			上次说到把所有的传感器模块在Sensor Controller中实现读写,并封装驱动. 先来看一下CC2650STK的原理图 用红色方框标记的DIO_0~DIO_7, DIO_23~DIO_30是可以 ... 
- zabbix3.0.4 部署History
			[root@zabbix-Test ~]# history 1 passwd root 2 exit 3 yum install ntpd* 4 yum inst ... 
