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:/ ...
随机推荐
- Linux环境变量相关文件
执行顺序为: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/ ...
- BufferedReader 输出与BufferedWriter 输入的用法
public static void main(String[] args) { String content[] = {"好久不见了","最近好吗",&qu ...
- .htaccess 使用大全
重新和重定向 注意:首先需要服务器安装和启用mod_rewrite模块. 强制 www RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com ...
- mac解压缩
tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------.gz解压1:gunz ...
- selenium IE 浏览器驱动下载地方
download: http://selenium-release.storage.googleapis.com/index.html
- VS2010环境下使用VB编写串口助手
1.在Form1的设计模式下添加以下控件: 2.添加好控件之后我们就可以打开Form1.vb进行编程了: '使用串口需要引用的命名空间 Imports System.IO.Ports Imports ...
- IOS开发-ObjC-NSArray
OC中数组分不可变数组(NSArray)和可变数组(NSMutableArray). 不可变数组: //------------------------------不可变数组------------- ...
- *CCF 201612-2 工资计算(80)
试题编号:201612-2 试题名称:工资计算 时间限制:1.0s 内存限制:256.0MB 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资.假设他一个月的税前工资 ...
- UVa 11456 - Trainsorting
题目大意:给一个车辆到达车站的序列(按时间先后),可以对车辆进行以下处理:插在队首.插在队尾或者拒绝进站.车站内的车辆必须按照重量大小从大到小排列,问车站内最多能有多少辆车辆? 假设车i是第一个进站, ...
- Web前端开发中的各种CSS规范
Reference: http://yusi123.com/2866.html 一.文件规范 1.文件均归档至约定的目录中(具体要求以豆瓣的CSS规范为例进行讲解): 所有的CSS分为两大类:通用类和 ...