未来星开发团队的官网

三分钟插入百万数据

drop table if exists tb_test2;
create table tb_test2 (
id int primary key auto_increment,
subject varchar(50) not null,
description varchar(200) not null,
teacher_id int(10) zerofill not null,
student_id int(10) zerofill default null,
state boolean not null default false
);state boolean not null default false
);

 

  测试案例源码如下:

 

package test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import util.DBUtil;
public class TestDataBase2 {
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
String sql = "insert into tb_test2(subject, description, teacher_id, student_id) values (?,?,?,?)";
try {
PreparedStatement prep = conn.prepareStatement(sql);
// 将连接的自动提交关闭,数据在传送到数据库的过程中相当耗时
conn.setAutoCommit(false);
long start = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
long start2 = System.currentTimeMillis();
// 一次性执行插入10万条数据
for (int j = 0; j < 100000; j++) {
prep.setString(1, "test2");
prep.setString(2, "test3");
prep.setInt(3, 1234562);
prep.setInt(4, 12354545);
// 将预处理添加到批中
prep.addBatch();
}
// 预处理批量执行
prep.executeBatch();
prep.clearBatch();
conn.commit();
long end2 = System.currentTimeMillis();
// 批量执行一次批量打印执行依次的时间
System.out.print("inner"+i+": ");
System.out.println(end2 - start2);
}
long end = System.currentTimeMillis();
System.out.print("total: ");
System.out.println(end - start);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtil.close(conn);
}
}
}

posted @ 2016-03-16 19:07 费元星的博客 阅读(...) 评论(...) 编辑 收藏
未来星开发团队的官网