如何往数据库快速插入百万条数据
具体逻辑实现:
创建两个表,一个内存表,一个数据表
然后将百万数据先存入内存表,再在内存表数据导入数据表
数据库默认好像只能存13万条数据,更改ini配置
max_heap_table_size = 1024M
前提:关闭mysql服务,在操作,重启
具体SQL语句:
# 创建内存表
CREATE TABLE `vote_record_memory` ( `id` INT (11) NOT NULL AUTO_INCREMENT, `user_id` VARCHAR (20) NOT NULL, `vote_id` INT (11) NOT NULL, `group_id` INT (11) NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `index_id` (`user_id`) USING HASH ) ENGINE = MEMORY AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;# 创建数据写入表
CREATE TABLE `vote_record` ( `id` INT (11) NOT NULL AUTO_INCREMENT, `user_id` VARCHAR (20) NOT NULL, `vote_id` INT (11) NOT NULL, `group_id` INT (11) NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`), KEY `index_user_id` (`user_id`) USING HASH ) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;# 更改SQL语句结束符
delimiter |# 创建SQL函数,用于生成百万条数据
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1 BEGIN DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; DECLARE return_str varchar(255) DEFAULT '' ; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1)); SET i = i +1; END WHILE; RETURN return_str; END |# 生成百万条数据至内存表 2min16s
CREATE PROCEDURE `add_vote_memory`(IN n int) BEGIN DECLARE i INT DEFAULT 1; WHILE (i <= n ) DO INSERT into vote_record_memory (user_id,vote_id,group_id,create_time ) VALUEs (rand_string(20),FLOOR(RAND() * 1000),FLOOR(RAND() * 100) ,now() ); set i=i+1; END WHILE; END |# 再次将语法结束符改回来
delimiter ;# 将内存中的百万数据插入数据表 0.37s
CALL add_vote_memory(1000000);INSERT into vote_record SELECT * from vote_record_memory;
如何往数据库快速插入百万条数据相关推荐
- 百万条数据插入mysql_mysql快速插入百万条数据
作者:在赤道吃冰棍儿 www.jianshu.com/p/36b87cb3a05a 前言 假设现在我们要向mysql插入500万条数据,如何实现高效快速的插入进去?暂时不考虑数据的获取.网络I/O.以 ...
- mysql十万条数据_2秒内向数据库中插入十万条数据?
怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...
- 【SpringBoot项目中使用Mybatis批量插入百万条数据】
SpringBoot项目中使用Mybatis批量插入百万条数据 话不多说,直接上代码,测试原生批处理的效率 开始测试 背景:因为一些业务问题,需要做多数据源,多库批量查询.插入操作,所以就研究了一下. ...
- mysql 存储过程查询优化_mysql用存储过程插入百万条数据, 及查询优化
查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...
- Mysql数据库快速插入亿级数据
Mysql数据库快速插入亿级数据 接手一个项目,该项目运行了两三年了.接手的时候,只有一个部署文档和全部代码,再没有其他文档了,也没有其他任何人了解这个项目.好吧,试着深入了解吧.代码在测试环境跑来了 ...
- MySQL十秒插入百万条数据
mysql数据库准备 private String Driver = "com.mysql.cj.jdbc.Driver";private String url ="jd ...
- 怎么快速插入 100 条数据,用时最短
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:孤独键客 https://juejin.im/post/5d ...
- 怎么快速插入 100 条数据,用时最短!
原文:https://my.oschina.net/OutOfMemory/blog/3117737 群友又抛出了一道面试题,有人给出了答案,看完后,是否还有改进的地方,留言评论,一起精进吧! 多线程 ...
- python往数据库批量插入多条数据
1.需要定义构造函数(init),给实例属性赋值(包括host.port.user.password和database) 2.连接数据库 3.插入数据,先在数据库中建好表,并且添加好所需要的字段 4. ...
最新文章
- 可在广域网部署运行的QQ高仿版 -- GG叽叽(开源)
- 中国物联网2020年将达到1660亿美元的市场规模
- 设计器的使用及常用控件
- c语言中图形驱动程序功能_C / C ++中的图形:一些更有趣的功能
- linux查看文件从底部开始,linux中怎样从底部向上查看log文件
- hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix
- 三子棋の胜负判断(洛谷P1838题题解,Java语言描述)
- 序列化模块和hashlib模块
- 使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
- android 接百度SDK遇到的坑(百度地图BD09经纬度转高德地图GCJ02经纬度)
- 专家读《Windows 内核情景分析》这本书
- 监督学习、无监督学习、弱监督学习、半监督学习、强化学习概念
- 基于Lua+Kafka+Heka的Nginx Log实时监控系统
- A Brief History of Just-In-Time 简读
- uva1593代码对齐
- 把微信做成找券机器人,淘宝查券返利小助手实现方法分享
- 【搬运】常用逻辑符号整理
- 蜗牛爬墙墙高10米C语言,蜗牛爬墙——打破小朋友的数学思维模式
- Linux中查看各文件夹大小命令du -h --max-depth=1
- mac java调用浏览器_mac osx 下 浏览器 开启 java