




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
资料来源互联网,分享与互联网我的数据库MySQL Assembly codeCREATE TABLE users ( id int(11) NOT NULL auto_increment, firstname varchar(50) NOT NULL, lastname varchar(50) NOT NULL, age int(11) NOT NULL, PRIMARY KEY (id) ENGINE=InnoDB DEFAULT CHARSET=utf8我的数据库辅助类Java codepackage com.jdbc.batch;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public final class DBUtils private static String mysqlurl = jdbc:mysql:/localhost:3306/mytest; private static String accessurl = jdbc:mysql:/localhost:3306/mytest; private static String user = root; private static String password = root; / 获得连接 public static Connection getAccessConn() throws SQLException return DriverManager.getConnection(accessurl, user, password); public static Connection getMySqlConn() throws SQLException return DriverManager.getConnection(mysqlurl, user, password); / 释放连接 public static void free(ResultSet rs, PreparedStatement ps, Connection conn) try if (rs != null) rs.close(); catch (SQLException e) e.printStackTrace(); finally try if (ps != null) ps.close(); catch (SQLException e) e.printStackTrace(); finally try if (conn != null) conn.close(); catch (SQLException e) e.printStackTrace(); / 加载驱动 static try Class.forName(com.mysql.jdbc.Driver); catch (ClassNotFoundException e) System.out.println(驱动加载出错); 我的测试类Java codepackage com.jdbc.batch;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class BatchExample private static Connection mysqlConn = null; private static ResultSet rs = null; / 总条数 private static int allCount = 10000; / 分批条数 private static int preCount = 1000; / 计数器 private static int count = 0; private static String insertSQL = insert into users(firstname, lastname, age) values(?, ?, ?); private static PreparedStatement mysqlPs = null; public static void main(String args) throws SQLException try mysqlConn = DBUtils.getMySqlConn(); mysqlPs = mysqlConn.prepareStatement(insertSQL); mysqlConn.setAutoCommit(false); long start = System.currentTimeMillis(); for (int i = 1; i + (+count) * preCount + 条); long end = System.currentTimeMillis(); System.out.println(数据导入完毕,所用时间为: + (end - start) + ms); catch (Exception e) mysqlConn.rollback(); System.out.println(数据出错,已进行回滚); throw new RuntimeException(); finally mysqlCmit(); DBUtils.free(rs, mysqlPs, mysqlConn); 我用的批处理.最后执行10000条的记录是Assembly code当前进行完毕=1000条当前进行完毕=2000条当前进行完毕=3000条当前进行完毕=4000条当前进行完毕=5000条当前进行完毕=6000条当前进行完毕=7000条当前进行完毕=8000条当前进行完毕=9000条当前进行完毕=10000条数据导入完毕,所用时间为: 8140 msJava code主要看下我的测试类BatchExample 我用的批处理 addBatch每1000条打包发送一次.但结果还是不尽人意8140ms.而我换了一种方案 用executeUpdate一次提交.SQL用StringBuilder串接 效率提升很快.代码Java codepackage com.jdbc.batch;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class BufferQuery private static Connection mysqlConn = null; private static ResultSet rs = null; / 总条数 private static int allCount = 10000; / 分批条数 private static int preCount = 1000; / 计数器 private static int count = 0; private static String insertSQL = insert into users(firstname, lastname, age) values(?, ?, ?); private static PreparedStatement mysqlPs = null; public static void main(String args) throws SQLException try StringBuilder sb = new StringBuilder(); sb.append(insert into users(firstname, lastname, age) values); mysqlConn = DBUtils.getMySqlConn(); mysqlPs = mysqlConn.prepareStatement(insertSQL); mysqlConn.setAutoCommit(false); long start = System.currentTimeMillis(); for (int i = 1; i 1) sb.append(,); sb.append(aa+ i +,bb,23); if(i % preCount = 0) System.out.println(导入进行= + (+count * preCount) + 条); mysqlPs.executeUpdate(sb.toString(); long end = System.currentTimeMillis(); System.out.println(数据导入完毕,所用时间为: + (end - start) + ms); catch (Exception e) mysqlConn.rollback(); System.out.println(数据出错,已进行回滚); throw new RuntimeException(); finally mysqlCmit(); DBUtils.free(rs, mysqlPs, mysqlConn); Java code/ 用的StringBuilder串接 long start = System.currentTimeMillis(); for (int i = 1; i 1) sb.append(,); sb.append(aa+ i +,bb,23); if(i % preCount = 0) System.out.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园伴舞基础知识培训总结课件
- 2025年贵港市平南县事业单位选调小学教师考试笔试试题(含答案)
- 维生素基础知识练习题(附答案)
- 2025年汽车驾驶员技师资格证书考试及考试题库含答案
- 2024年多重耐药菌医院感染预防与控制试题试题(附答案)
- 意外伤害急救知识与技能考核试题及答案
- 2025全国减税降费知识竞赛试题库(含答案)
- (2024)口服给药制度考试试题及答案
- 基础护理学试题库及答案
- 2025年计算机组装与维护试题及答案
- 显微注射技术课件
- 医疗健康领域的数字化人才培养计划
- 汽车贴膜外包合同范本
- DB31/T 1341-2021商务办公建筑合理用能指南
- 综合门诊部管理制度
- (高清版)DG∕TJ 08-9-2023 建筑抗震设计标准
- 特岗服务协议书
- GB/T 10250-2025船舶电气与电子设备电磁兼容性金属船体船舶
- 2025全国小学生“学宪法、讲宪法”活动知识竞赛题库及答案
- 2025年自动驾驶卡车在港口物流中的应用与挑战报告
- 菜籽饼供货合同协议
评论
0/150
提交评论