mysql数据库实现插入千万级数据的方法
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,mysql如何实现循环插入千万级数据?1.建表:CREATE TABLE `mysql_genarate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uui
千家信息网最后更新 2024年11月12日mysql数据库实现插入千万级数据的方法
mysql如何实现循环插入千万级数据?
1.建表:
CREATE TABLE `mysql_genarate` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uuid` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5990001 DEFAULT CHARSET=utf8
2.创建一条条循环插入的存储过程
create procedure test_two1() begin declare i int default 0; while i < 3000 do INSERT into mysql_genarate(uuid) VALUES(UUID()); set i = i + 1; end while; end #
使用 call test_two1(); 测试,3000条数据耗时74秒,如果是千万级数据,这个速度将无法忍受。
所以我在网上找了一下优化的方法,发现可以拼接批量插入的sql语句,速度提升很多;
3.优化后的存储过程
CREATE PROCEDURE insertPro(in sum INT)BEGINDECLARE count INT DEFAULT 0;DECLARE i INT DEFAULT 0;set @exesql = concat("insert into mysql_genarate(uuid) values");set @exedata = "";set count=0;set i=0;while count0 then set @exedata = SUBSTRING(@exedata, 2); set @exesql = concat("insert into mysql_genarate(uuid) values ", @exedata); prepare stmt from @exesql; execute stmt; DEALLOCATE prepare stmt;end if;end;
调用 call insertPro(3000) ,耗时零点几秒,这个速度可以接受。
接着调用 call insertPro(30000000) ;
测试3000万条数据插入,结果耗时1824.203s(30分钟)。个人电脑这个速度可以了。
另外,采用java多线程同时拼接sql,每10000条提交一次的方式,在8个线程同时运行的情况下,3000万条数据插入耗时336s,1亿条数据插入耗时1087s。
以上就是mysql如何实现循环插入千万级数据的详细内容,更多请关注其它相关文章!
数据
速度
循环
万条
同时
线程
过程
存储
测试
方法
个人
个人电脑
内容
就是
情况
文章
方式
更多
条条
电脑
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全大数据时代的命脉
软件开发的市场情况
cscd 数据库
cardia数据库
网络技术四级真题
网路服务器配置与管理总结
apache虚拟服务器
企业服务器raid阵列详解
实施工程师需要掌握的数据库
企业租用云服务器保密
西安全美食互联网科技 推广
qr 软件开发库
交通违法当场录入数据库
网络技术服务包含网络建设吗
爱快路由做服务器
金融科技与互联网金融用书
简单数据库设计csdn
网络安全座谈会潍坊
农村房产数据库
数据库的数据文件的关键字
2018河北网络安全4
关于卫生局网络安全的总结
互联网的科技领域有哪些
网信办网络安全和信息化管理
分布式数据库没有全局外模式
打电话提示服务器被占用
软件开发最高级
住宅小区可以做计算机服务器么
网络安全座谈会潍坊
更应该注重网络安全的