大量数据情况下单线程插入和多线程(高并发)insert数据库的性能测试 - Go语言中文社区

大量数据情况下单线程插入和多线程(高并发)insert数据库的性能测试


欢迎访问我的网站

public class ThreadImport {
static Connection conn;
    public void multiThreadImport( final int ThreadNum){
        final CountDownLatch cdl= new CountDownLatch(ThreadNum);
        long starttime=System.currentTimeMillis();
        for(int k=1;k<=ThreadNum;k++){
            new Thread(new Runnable() {
                @Override
                public void run() {
                   // 获得连接
                try {
conn = (new DatabaseUtils.Builder().setHost("localhost").setDbName("study").setUser("study")
.setPassword("123").builder()).getConection();
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
                        //插入500/线程数条数据
                        for(int i=1;i<=500/ThreadNum;i++){
                            String uuid=UUID.randomUUID().toString();
                        
try {
   PreparedStatement ps = conn.prepareStatement("INSERT into demo(name,adress) values (?, ?)");
  // ps.addBatch("insert into demo(name,adress) values('"+uuid+"','"+uuid+"')");
    ps.setString(1, uuid);
    ps.setString(2, uuid);
ps.executeUpdate();
if(i%500==0){
                           ps.executeBatch(); //500条执行一次
                       System.out.println("INSERT into demo(name,adress) values " + uuid + uuid);
                           }

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
                            
                        }
                        cdl.countDown();
                }
            }).start();
        }
        try {
            cdl.await();
            long spendtime=System.currentTimeMillis()-starttime;
            System.out.println( ThreadNum+"个线程花费时间:"+spendtime);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }


    public static void main(String[] args) throws Exception {
        ThreadImport ti=new ThreadImport();
        ti.multiThreadImport(1);
        System.out.println("+++1个线程结束+++");
        ti.multiThreadImport(5);
        System.out.println("+++5个线程结束+++");
        ti.multiThreadImport(8);
        System.out.println("+++8个线程结束+++");
        ti.multiThreadImport(10);
        System.out.println("+++10个线程结束+++");
        ti.multiThreadImport(20);
        System.out.println("+++20个线程结束+++");
        ti.multiThreadImport(40);
        System.out.println("+++40个线程结束+++");
        System.out.println("笔记本CPU数:"+Runtime.getRuntime().availableProcessors());
   
    }


}

欢迎 ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️

< END >

程序员NBA

一个有故事的程序员

在这里插入图片描述

或者加我微信1414200300一起讨论java技术,有什么问题群里人也可以帮你一起解决

欢迎访问我的网站

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Android_Mrchen/article/details/75098306
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 15:19:10
  • 阅读 ( 1363 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢