package com.mysql;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.Date;

public class InsertTest {

public static void main(String[] args) throws ClassNotFoundException, SQLException {

final String url = "jdbc:mysql://127.0.0.1/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";

final String name = "com.mysql.jdbc.Driver";

final String user = "root";

final String password = "root";

Connection conn = null;

Class.forName(name);//指定连接类型

conn = DriverManager.getConnection(url, user, password);//获取连接

if (conn != null) {

System.out.println("获取连接成功");

insert(conn);

} else {

System.out.println("获取连接失败");

}

}

public static void insert(Connection conn) {

// 开始时间

Long begin = new Date().getTime();

// sql前缀

String prefix = "INSERT INTO t_teacher (name, age) VALUES ";

try {

// 保存sql后缀

StringBuffer suffix = new StringBuffer();

// 设置事务为非自动提交

conn.setAutoCommit(false);

// 比起st,pst会更好些

PreparedStatement pst = (PreparedStatement) conn.prepareStatement(" ");//准备执行语句

// 外层循环,总提交事务次数

for (int i = 1; i <= 100; i++) {

suffix = new StringBuffer();

// 第j次提交步长

for (int j = 1; j <= 100000; j++) {

// 构建SQL后缀

suffix.append("('" + "cxx" + j + "'," + j + "),");

}

// 构建完整SQL

String sql = prefix + suffix.substring(0, suffix.length() - 1);

// 添加执行SQL

pst.addBatch(sql);

// 执行操作

pst.executeBatch();

// 提交事务

conn.commit();

// 清空上一次添加的数据

suffix = new StringBuffer();

}

// 头等连接

pst.close();

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

// 结束时间

Long end = new Date().getTime();

// 耗时

System.out.println("1000万条数据插入花费时间 : " + (end - begin) / 1000 + " s");

System.out.println("插入完成");

}

}

//数据库驱动jar包可以翻到jdk/jre/lib/etx下

//数据库插入数据的事件消耗大多在提交事务次数上,可以选择每10000次或10w次提交一次事务。

//如果提交事务被拒绝可以通过 show VARIABLES like '%max_allowed_packet%'; 观察数据库允许提交的package大小

//解决package大小:https://www.jb51.net/article/140790.htm

// 其执行sql大致原理为 insert into table (name,age) values ("zhang",12),("zhang",13)("zhang",14)("zhang",15)

java对数据库性能测试的更多相关文章

  1. 【原创】相对完整的一套以Jmeter作为工具的性能测试教程(接口性能测试,数据库性能测试以及服务器端性能监测)

    准备工作 jmeter3.1,为什么是3.1,因为它是要配合使用的serveragent所支持的最高版本,下载链接 https://pan.baidu.com/s/1dWu5Ym JMeterPlug ...

  2. Jmeter之数据库性能测试

    公司的**产品急待上线,但查询订单操作响应很慢,为了准确定位问题,特对几个大数据查询语句进行性能测试. 环境介绍:数据库用的MYSQL,采用分布式布置,本次单压测一台数据库服务器,查询待支付订单.待消 ...

  3. JAVA与数据库MySQL相连接

    JDBC(Java数据库连接体系结构): 是Java实现数据库访问的应用程序编程接口,主要功能是管理存放在数据库中的数据.通过接口对象,应用程序可以完成与数据库的连接,执行SQL语句,从数据库中获取结 ...

  4. mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?

      本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...

  5. 【java 获取数据库信息】获取MySQL或其他数据库的详细信息

    1.首先是 通过数据库获取数据表的详细列信息 package com.sxd.mysqlInfo.test; import java.sql.Connection; import java.sql.D ...

  6. Java与数据库之间时间的处理

    Java与数据库之间时间的处理 在数据库中建表: DROP TABLE IF EXISTS `times`; CREATE TABLE `times` ( `id` int(11) NOT NULL ...

  7. 【助教】Java获取数据库数据展示

    本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子. 实际上,我们要解决以下两个问题: Java与数据库交互(以JDBC为例) 数据展示在前台页面(以Servlet+J ...

  8. (转)java读取数据库表信息,子段

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  9. Java免费开源数据库、Java嵌入式数据库、Java内存数据库

    Java免费开源数据库.Java嵌入式数据库.Java内存数据库 http://blog.csdn.net/leiyinsu/article/details/8597680

随机推荐

  1. Linux shell基础(五)sed命令

    一.sed命令 sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显 ...

  2. Jdbc批处理一点异同

    同样的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class TestBatch {   public stati ...

  3. linux 服务器/客户端 tcp通信的简单例子

    昨天弄了sublime之后没有弄输入中文的了,学生党来着,刚好可以练练英语(英语渣渣,还要考六级),所以注释都写英文的(语法什么的就别太深究了) 服务器端: /*start from the very ...

  4. opencv基于PCA降维算法的人脸识别

    opencv基于PCA降维算法的人脸识别(att_faces) 一.数据提取与处理 # 导入所需模块 import matplotlib.pyplot as plt import numpy as n ...

  5. 如何在C#/.NET Core中使用责任链模式

    原文:Chain Of Responsbility Pattern In C#/.NET Core 作者:Wade 译者:Lamond Lu 最近我有一个朋友在研究经典的"Gang Of F ...

  6. 你知道Spring是怎么解析配置类的吗?

    彻底读懂Spring(二)你知道Spring是怎么解析配置类的吗? 推荐阅读: Spring官网阅读系列 彻底读懂Spring(一)读源码,我们可以从第一行读起 Spring执行流程图如下: 如果图片 ...

  7. Day_14【IO流】扩展案例3_对文本文件中的字符串内容进行反转

    分析以下需求,并用代码实现 项目根路径下有text.txt文件,内容如下 我爱黑马 123456 利用IO流的知识读取text.txt文件的内容反转后写入text.txt文件中 654321 马黑爱我 ...

  8. SVN 报错问题

    svn: error: The subversion command line tools are no longer provided by Xcode ```. ## 问题分析 由于Mac绝大部分 ...

  9. MongoDB介绍及开发指南

    目录 一.MongoDB介绍 二.搭建MongoDB 三.Java With MongoDB 四.Spring Session MongoDB 五.MongoDB开发规范及示例 六.MongoDB + ...

  10. Python 简明教程 --- 3,Python 基础概念

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Pytho ...