mysql jdbc batch_JDBC批处理(batch)
一下是关于JDBC批处理的一个程序测试
Nobatch
package JDBCBatch;
import java.sql.*;
public class TestCommon {
static long startTime;
public static void main(String[] args) throws Exception {
Connection conn = getConnection();
PreparedStatement ps = null;
try {
startTime=System.nanoTime(); //获取开始时间
ps = conn
.prepareStatement("INSERT INTO batchtab values (?, ?)");
conn.setAutoCommit(false);
for (int n = 0; n < 10000; n++) {
Integer i = new Integer(n);
ps.setString(1, i.toString());
ps.setString(2, "value" + i.toString());
ps.executeUpdate();
}
conn.commit();
long endTime=System.nanoTime(); //获取结束时间
System.out.println("程序运行时间: "+(endTime-startTime)+"ns");
}catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("Message: " + ex.getMessage());
System.out.println("Vendor error code: " + ex.getErrorCode());
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception: " + e.getMessage());
} finally {
if (conn != null)
conn.close();
if (ps != null)
ps.close();
}
}
public static Connection getConnection() {
Connection con = null; //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
con = DriverManager.getConnection("jdbc:mysql://localhost/hibernate",
"root","123");
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
}
下面是使用批处理的
package JDBCBatch;
import java.sql.*;
public class TestPreStatementBatch {
static long startTime;
public static void main(String[] args) throws Exception {
Connection conn = getConnection();
ResultSet rs = null;
PreparedStatement ps=null;
try {
startTime=System.nanoTime(); //获取开始时间
ps = conn.prepareStatement("INSERT INTO batchtab values (?, ?)");
conn.setAutoCommit(false);
ps.clearBatch();
for (int n=0; n<10000; n++) {
Integer i = new Integer(n);
ps.setString(1, i.toString());
ps.setString(2, "value" + i.toString());
ps.addBatch();
}
ps.executeBatch();
conn.commit();
long endTime=System.nanoTime(); //获取结束时间
//打印消耗时间
System.out.println("程序运行时间: "+(endTime-startTime)+"ns");
} catch (BatchUpdateException b) {
System.out.println("SQLException: " + b.getMessage());
System.out.println("SQLState: " + b.getSQLState());
System.out.println("Message: " + b.getMessage());
System.out.println("Vendor error code: " + b.getErrorCode());
System.out.print("Update counts: ");
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("Message: " + ex.getMessage());
System.out.println("Vendor error code: " + ex.getErrorCode());
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception: " + e.getMessage());
} finally {
if( conn != null )
conn.close();
if(ps !=null)
ps.close();
if(rs !=null)
rs.close();
}
}
public static Connection getConnection() {
Connection con = null; //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动
con = DriverManager.getConnection("jdbc:mysql://localhost/hibernate",
"root","123");
} catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
}
下面是插入10W条数据的测试
批处理:902111464ns
普通插入:1030343361ns
代码的主要区别:
这个是批处理的:
for (int n=0; n<10000; n++) {
Integer i = new Integer(n);
ps.setString(1, i.toString());
ps.setString(2, "value" + i.toString());
ps.addBatch();
}
ps.executeBatch();
这个是不使用批处理的:
for (int n = 0; n < 10000; n++) {
Integer i = new Integer(n);
ps.setString(1, i.toString());
ps.setString(2, "value" + i.toString());
ps.executeUpdate();
}
mysql jdbc batch_JDBC批处理(batch)相关推荐
- mysql jdbc批处理_JDBC批处理 数据库连接池
关于JDBC Jdbc是java database connectivity的简称,java数据库连接,专门用来通过一段java代码连接数据库的一门技术. 使用方法大致为一下六个步骤: 一.注册驱动 ...
- mysql jdbc驱动 批量更新_jdbc批量插入,删除,更新
批量处理:一次向数据库发送多个SQL语句时,可以减少通信开销,从而提高性能. 不确定JDBC驱动程序是否支持此功能.应该使用DatabaseMetaData.supportsBatchUpdates( ...
- mysql jdbc execute_MySQL JDBC Statement.executeBatch实践问题
MySQL JDBC Statement.executeBatch实践(执行效率低) 现在很少使用原生jdbc去实现代码, 最近在测试MySQL批处理数据遇到一个问题: 执行Statement.exe ...
- Jmeter中JDBC Connection Configuration实现MySQL JDBC Request数据库处理
一.JDBC Connection Configuration数据库配置元件 线程组-添加-配置元件-JDBC Connection Configuration Name:元件命名空间,请随意 Com ...
- JDBC的批处理操作三种方式
SQL批处理是JDBC性能优化的重要武器,批处理的用法有三种. package lavasoft.jdbctest; import lavasoft.common.DBToolkit; import ...
- connection url mysql,JDBC 连接MySQL实例详解
JDBC连接MySQL JDBC连接MySQL 加载及注册JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); Class.forNam ...
- mysql jdbc驱动 批量更新_jdbc-批量插入、批量删除、批量更新
一.JDBC的批量插入 JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等. 我用Mysql5.1.5的JDBC driver 分别对三种比较常用的方法做了测试 方法一,使用P ...
- hsqldb mysql 语法_[spring batch]建表语句(hsqldb改mysql)
/** * @see https://spring.io/guides/gs/batch-processing/ */ @Configuration @EnableBatchProcessing pu ...
- 架构周报| 浅析MySQL JDBC连接配置上的两个误区
经典案例 \\ 浅析MySQL JDBC连接配置上的两个误区:相信使用MySQL的同学都配置过它的JDBC驱动,多数人会直接从哪里贴一段URL过来,然后稍作修改就上去了,对应的连接池配置也是一样的,很 ...
最新文章
- Ascend Pytorch算子适配层开发
- 干货!整理了50个 Pandas 高频使用技巧,强烈建议收藏!
- SQLServer之创建INSTEAD OF INSERT,UPDATE,DELETE触发器
- Trie 树——搜索关键词提示
- Linux最佳聊天软件:Skype 4.3轻体验
- 牛客题霸 [子数组的最大累加和问题] C++题解/答案
- 【牛客 - 1080E】tokitsukaze and Segmentation(dp,递推,思维)
- 一般一个前端项目完成需要多久_制作分销小程序最快要多久
- duration java_Java Duration类| toHours()方法与示例
- JAVA设计模式之【职责链模式】
- nagios 监控出现It appears as though you do not have permission
- 因果推断笔记——自整理因果推断理论解读(七)
- 【机器人操作系统】ROS话题编程
- IT人的地摊不就是开源么 | 凌云时刻
- 基于jsp(java)学生成绩管理系统的设计和实现
- 联想小新Pad救砖(9008刷机)
- 带经纬度的水印相机_经纬度水印相机怎么设置?
- [Android移动安全渗透基础教程] 模拟器篇
- 《逻辑:你认为正确,就一定正确吗?》
- HTML基础知识概要面试必备
热门文章
- java解决小问题:我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。 	请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?(提示:使用while循环)
- 求50以内的全部素数
- python中cut_pandas.cut
- Windows的cmd中cd指令切换路径
- #1-1 统计二进制中1的个数
- 15.2. logrotate - rotates, compresses, and mails system logs
- LCD屏幕调试过程(驱动IC ST7701s)
- android一行三列,Android -- listview实现一行多列效果
- php背景自动切换图片,威联通NAS自动更换背景图片
- 485传感器接入串口交换机采集方案