Java千万数据导入mysql_java之5分钟插入千万条数据
虽说不一定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 ...
[MyBatis]五分钟向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简易图片选择器 (图片可多选,仿微信)
调用方法 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 不容易系列之一(错排,递归)
简而言之,就是把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版微信客户端.
微信客户端.NET版 目录 说明 功能 原理步骤 一些参考 说明 前两天比较闲,研究了一下web版微信.因为之前看过一篇博客讲微信web协议的,后来尝试分析了一下,半途中发现其实没什么意义,但又不想半 ...
STL 源代码分析 算法 stl_heap.h
本文senlie原版的.转载请保留此地址:http://blog.csdn.net/zhengsenlie heap ----------------------------------------- ...
Hibernate缓存和状态
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能. 缓存的介质一般是内存,所以读写速度很快.但如果缓存中存放的数据量非常大时,也会用硬盘 ...
[ASP.NET][Session] 使用 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分钟插入千万条数据相关推荐
- python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...
Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...
- mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?
多线程插入(单表) 多线程插入(多表) 预处理SQL 多值插入SQL 事务(N条提交一次) 多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? ...
- mysql十万条数据_2秒内向数据库中插入十万条数据?
怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...
- mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?
最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半小时内入库. 思路 1.估算文件大小 因为告诉文件有千万条,同时每条记录大概 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 (三)SSIS的简介 (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介 ...
- java使用mybatis一次性插入多条数据
项目场景: java使用ibatis作为持久层框架时如何一次性插入多条数据 问题描述 正常插入一条数据的代码是这样的 mapper.insert(model) 问题分析: 这样单条插入是没有问题,问题 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转...
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ( ...
- mysql 存储过程查询优化_mysql用存储过程插入百万条数据, 及查询优化
查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...
- 你向 Mysql 数据库插入 100w 条数据用了多久?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 目录 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理S ...
最新文章
- c++ 按键暂停继续 程序_CNC操作面板讲解,看看这些按键是什么意思
- poj 1873 枚举+凸包
- 操作系统页面置换算法实验报告
- boost::fusion::replace用法的测试程序
- bufferedwriter缓冲区设置多大比较合适_画册设计一般多大?宣传册设计用多大尺寸比较合适?...
- UpdatePanel的内容中出现自定义多语言运行异常
- 使用Ant定义生成文件
- java中的银行界面开发_ATM机银行项目java图形界面
- 对JSON格式的城市按照拼音首字母排序
- fckeditor java_FCKeditor在线编辑器(Java)
- 久其报表节点汇总_久其通用数据管理平台常见公式
- python 地震数据可视化
- Python查询快递订单信息
- Java 时间相关 获取某月的某一天
- 定制化chromium的修改方法
- Axure RP 8.1 下载(附汉化+注册码)
- 【理财入门二】复利思维
- 荣耀3手机android 5.0吗,华为荣耀3的手机系统是什么?华为荣耀3能升级安卓4.3吗?...
- WhatsApp的Erlang世界
- 招聘是一门学问,给求职者发了offer后,他说不来了
热门文章
- 如何在ASP.NET Core程序启动时运行异步任务(1)
- 一个.NET Core开发者的Linux入门学习笔记
- 基于.NET Standard的分布式自增ID算法--Snowflake
- 再不学习我们就out了
- 【活动(广州)】office365的开发者训练营
- 腾讯云短信服务使用记录与.NET Core C#代码分享
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
- 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
- 【Microstation】三维建模基础及软件入门到精通实验教程目录
- Android之修改app名字客户需要升级需要注意的问题