虽说不一定5分钟就插入完毕,因为取决去所插入的字段,如果字段过多会稍微慢点,但不至于太慢。10分钟内基本能看到结果。

之前我尝试用多线程来实现数据插入(百万条数据),半个多小时才二十多万条数据。

线程池数据插入核心代码:

ExecutorService executorService = Executors.newFixedThreadPool();

executorService.submit(new Runnable() {

@Override

public void run() {

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

TestUser user = new TestUser();

user.setName(RandomUtil.randomString());

userDao.insert(user);

System.out.println("插入数据:" + i);

}

System.out.println(Thread.currentThread().getName() + "正在执行任务");

}

});

应用场景:

造测试数据,如千万甚至亿万级别的数据自动快速生成。

关键核心实现类代码如下:

long startTime = System.currentTimeMillis();

try {

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

List users = new ArrayList<>();

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

TestUser user = new TestUser();

user.setName(RandomUtil.randomString());

user.setName2(RandomUtil.randomString());

user.setName3(RandomUtil.randomString());

user.setName4(RandomUtil.randomString());

user.setName5(RandomUtil.randomString());

user.setName6(RandomUtil.randomString());

user.setName7(RandomUtil.randomString());

user.setName8(RandomUtil.randomString());

user.setName10(RandomUtil.randomString());

user.setName11(RandomUtil.randomString());

user.setName12(RandomUtil.randomString());

user.setName13(RandomUtil.randomString());

user.setName14(RandomUtil.randomString());

user.setName15(RandomUtil.randomString());

user.setName16(RandomUtil.randomString());

user.setName17(RandomUtil.randomString());

user.setName18(RandomUtil.randomString());

user.setName19(RandomUtil.randomString());

user.setName20(RandomUtil.randomString());

users.add(user);

}

int changed = userDao.batchAdd(users);

System.out.println("#" + i + " changed=" + changed);

}

} catch (Exception ex) {

ex.printStackTrace();

} finally {

long endTime = System.currentTimeMillis();

System.out.println("Time elapsed:" + toDhmsStyle((endTime - startTime) / ) + ".");

}

代码原理:

插入一千条数据后提交一次,然后重复一万次的方式。

关键核心DAO:

@Repository

public interface TestUserDao extends BaseMapper {

int batchAdd(@Param("users") List users);

}

XML:

insert into test_user(name,name2,name3,name4,name5,name6,name7,name8,name9,name10,name11,name12,name13,name14,name15,name16,name17,name18,name19,name20)

values

(#{item.name},#{item.name2},#{item.name3},#{item.name4},#{item.name5},#{item.name6},#{item.name7},#{item.name8},#{item.name9},#{item.name10},#{item.name11},#{item.name12},#{item.name13},#{item.name14},#{item.name15},#{item.name16},#{item.name17},#{item.name18},#{item.name19},#{item.name20})

【JDBC】使用Spring提供的JDBCTemplate通过Statement向MySql数据库插入千万条数据,耗时4m55s,使用insert语句批量插入方式二

这回依然是使用 insert批量插入这种方式 insert into emp(name,age,cdate) values ('A' , 20, '2019-10-13 00:00:00'), ('B ...

【JDBC】使用Spring提供的JDBCTemplate通过PrepareStatement向MySql数据库插入千万条数据,耗时32m47s,速度提升有限

数据库环境还和原来一样,只是从Statement换成了PrepareStatement,都说PrepareStatement因为预编译比Statement快,但是实际运行真快不了多少. 代码如下: p ...

&lbrack;MyBatis&rsqb;五分钟向MySql数据库插入一千万条数据 批量插入 用时5分左右

本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的数据库环境是mys ...

orcle 如何快速插入百万千万条数据

有时候做实验测试数据用到大量数据时可以用以下方法插入: 方法一:使用xmltable create table bqh8 as select rownum as id from xmltable('1 ...

java向数据库插入N条数据

为了测试mysql的索引,要向数据库先插入上万条数据,然后再测试.手动插入太麻烦,写了一段代码. 先上代码: package action; import java.sql.Connection; i ...

mysql自定义函数并在存储过程中调用,生成一千万条数据

mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

你向 Mysql 数据库插入 100w 条数据用了多久?

阅读本文大概需要 2 分钟. ▌目录 多线程插入(单表) 多线程插入(多表) 预处理 SQL 多值插入 SQL 事务( N 条提交一次) ▌多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程 ...

LOAD DATA INFILE读取CSV中一千万条数据至mysql

作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...

ArrayList插入1000w条数据的时间比较分析

一分钟系列: 读懂GC日志 ArrayList插入1000w条数据之后,我怀疑了jvm... Java JIT性能调优 Java性能优化指南系列(三):理解JIT编译器 准备:调试程序加入VM Opt ...

随机推荐

iOS简易图片选择器 &lpar;图片可多选&comma;仿微信&rpar;

调用方法 NickyImagePickerViewController *pickerController = [[NickyImagePickerViewController alloc]init] ...

表结构导出到excel中

SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull ...

HDU 1465 不容易系列之一&lpar;错排,递归&rpar;

简而言之,就是把n个信封全部装错的可能数.(中问题,具体看题目) //当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示, //那么M(n-1)就表示n-1个编号元素放在 ...

「Poetize9」升降梯口

3056: 升降梯口 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 43  Solved: 42[Submit][Status] Description ...

NET版微信客户端&period;

微信客户端.NET版 目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半 ...

STL 源代码分析 算法 stl&lowbar;heap&period;h

本文senlie原版的.转载请保留此地址:http://blog.csdn.net/zhengsenlie heap ----------------------------------------- ...

Hibernate缓存和状态

缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.   缓存的介质一般是内存,所以读写速度很快.但如果缓存中存放的数据量非常大时,也会用硬盘 ...

&lbrack;ASP&period;NET&rsqb;&lbrack;Session&rsqb; 使用 SQLServer 会话管理解决 Session 丢失问题

使用 SQLServer 会话管理解决 Session 丢失问题 步骤 1.通过命令行执行 aspnet_regsql.exe 程序(不要双击安装),先在 CMD 中输入命令 cd C:\Window ...

Swift 之属性setter、getter方法

Swift 之属性setter.getter方法 Swift中的属性分为两种属性,一种就是计算型属性 一种就是存储型属性,开始我虽然知道这两种属性,但是了解并不深对于他的setter和getter方法 ...

Java千万数据导入mysql_java之5分钟插入千万条数据相关推荐

  1. python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...

    Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...

  2. mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?

    多线程插入(单表) 多线程插入(多表) 预处理SQL 多值插入SQL 事务(N条提交一次) 多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? ...

  3. mysql十万条数据_2秒内向数据库中插入十万条数据?

    怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...

  4. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?

    最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...

  5. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...

     本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    (三)SSIS的简介    (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...

  6. java使用mybatis一次性插入多条数据

    项目场景: java使用ibatis作为持久层框架时如何一次性插入多条数据 问题描述 正常插入一条数据的代码是这样的 mapper.insert(model) 问题分析: 这样单条插入是没有问题,问题 ...

  7. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转...

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较    ( ...

  8. mysql 存储过程查询优化_mysql用存储过程插入百万条数据, 及查询优化

    查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...

  9. 你向 Mysql 数据库插入 100w 条数据用了多久?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 目录 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理S ...

最新文章

  1. c++ 按键暂停继续 程序_CNC操作面板讲解,看看这些按键是什么意思
  2. poj 1873 枚举+凸包
  3. 操作系统页面置换算法实验报告
  4. boost::fusion::replace用法的测试程序
  5. bufferedwriter缓冲区设置多大比较合适_画册设计一般多大?宣传册设计用多大尺寸比较合适?...
  6. UpdatePanel的内容中出现自定义多语言运行异常
  7. 使用Ant定义生成文件
  8. java中的银行界面开发_ATM机银行项目java图形界面
  9. 对JSON格式的城市按照拼音首字母排序
  10. fckeditor java_FCKeditor在线编辑器(Java)
  11. 久其报表节点汇总_久其通用数据管理平台常见公式
  12. python 地震数据可视化
  13. Python查询快递订单信息
  14. Java 时间相关 获取某月的某一天
  15. 定制化chromium的修改方法
  16. Axure RP 8.1 下载(附汉化+注册码)
  17. 【理财入门二】复利思维
  18. 荣耀3手机android 5.0吗,华为荣耀3的手机系统是什么?华为荣耀3能升级安卓4.3吗?...
  19. WhatsApp的Erlang世界
  20. 招聘是一门学问,给求职者发了offer后,他说不来了

热门文章

  1. 如何在ASP.NET Core程序启动时运行异步任务(1)
  2. 一个.NET Core开发者的Linux入门学习笔记
  3. 基于.NET Standard的分布式自增ID算法--Snowflake
  4. 再不学习我们就out了
  5. 【活动(广州)】office365的开发者训练营
  6. 腾讯云短信服务使用记录与.NET Core C#代码分享
  7. 论:开发者信仰之“天下IT是一家“(Java .NET篇)
  8. 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
  9. 【Microstation】三维建模基础及软件入门到精通实验教程目录
  10. Android之修改app名字客户需要升级需要注意的问题