发表于: 2018-10-14 21:52:36

1 589


今天完成的事情:

一,JDBC双重for循环批量插入

package com;

import org.junit.Test;

import java.sql.*;

public class Tesk {
@Test
   public void insert(){

try {
Class.forName("com.mysql.jdbc.Driver");

       } catch (ClassNotFoundException e) {
e.printStackTrace();
       }
}
//获取开始时间
   long start=System.currentTimeMillis();
  //sql后缀
   String prefix = "INSERT INTO students(name,qq,wish,school,enrolment_time,type,know_from,create_at,update_at) VALUES";
   {
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/new?rewriteBatchedStatements=true&characterEncoding=utf8&useSSL=false",
           "root","123456789");
          //保存SQL后缀
           StringBuffer suffix = new StringBuffer();
//            设置事务非自动提交
           conn.setAutoCommit(false);
           //Statement st = conn.createStatement();
           //比起st,pst会更好些
           PreparedStatement pst = conn.prepareStatement("");
           //外层循环,总提交事务次数
           for (int i =1; i <=1;i++){
//第次提交步长
               for (int j = 1; j <= 10;j++){
//构建SQL后缀
                   suffix.append("('斯祥',"+123456+",'即可了','就会',"+456+",'java','后来',"+9788+","+954+"),");
               }
//构建完整SQL
               String sql = prefix + suffix.substring(0, suffix.length() - 1);
//                System.out.println(sql);
               //添加执行SQL
               pst.addBatch(sql);
//                执行操作
               pst.executeBatch();
//                提交事务
               conn.commit();
//                清空上一次添加的数据
               suffix = new StringBuffer();
           }
//            头等连接
           //关闭连接
           pst.close();
           conn.close();
       } catch (SQLException e) {
e.printStackTrace();
       }
long end=System.currentTimeMillis();
           //获取结束时间
           System.out.println("程序运行时间: "+(end-start)+"ms");

   }

}

二,创建索引对比建索引和不建索引的效率查别

有索引插入100万条数据

有索引插入3000万条数据

根据id查找信息

删除索引

无索引插入100万条数据

无索引插入3000万条数据

根据id查找信息

根据上面的有无索引状态下进行插入数据以及查询数据

我们可以得出结论:

在有索引状态下,插入批量插入数据比没有索引状态下要慢

在有索引状态下,查询数据比没有索引状态下要快

三,测试一下连接DB中断后TryCatch是否能正常处理。

关闭mysql服务 net stop mysql

出现异常,数据库没有接收到信息,连接中断

明天计划的事情:

回顾任务一,深入了解,并熟练使用JdbcJdbctemplatemybatisSpring+Mybatis

遇到的问题:


收获:

了解了如何使用双重for循环进行批量插入


返回列表 返回列表
评论

    分享到