mysql 插入百万级数据 简单靠谱的方法
来源:互联网 发布:网络报警平台或中心 编辑:程序博客网 时间:2024/06/13 11:44
之前学习mysql的时候,想要试着插入百万、千万级别的测试数据,看了下网上的不少博客,基本都是复制copy,大多数都是用个存储过程就直接循环插入。。
比如:
drop table if exists test;create table test (c1 int(11) default NULL,c2 varchar(30) default NULL,c3 date default NULL);drop PROCEDURE if exists test_insert;delimiter //CREATE PROCEDURE test_insert() begin declare v int default 0; while v < 800 do insert into test values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652)); set v = v + 1; end while; end //
这里就先插800条试试水。。
结果800条就用了半分钟,简直不能忍啊
经过查阅不少信息,发现每次insert的时候mysql都会自动提交,然后会有其他的一些耗时的操作,所以。。。。。取消掉自动提交不就好了嘛。。。直接 SET AUTOCOMMIT=0;
代码如下:
drop table if exists test;create table test (c1 int(11) default NULL,c2 varchar(30) default NULL,c3 date default NULL);drop PROCEDURE if exists test_insert;delimiter //CREATE PROCEDURE test_insert(n int) begin declare v int default 0; SET AUTOCOMMIT=0; while v < n do insert into test values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652)); set v = v + 1; end while; SET AUTOCOMMIT=1; end //
试试800条
秒秒钟的事
继续加大量8千、8万、80万。。。1千万。。
1千万只用的3分钟(100万10多秒就差不多了)
验证哈插入的数据
数量正确,数据也没问题,大功告成!
———————————————————-分割线————————————————————————
然后又发现个更简单的方法。。直接用insert into … select … from …就行了
也就是不停地复制表里的数据,再插入
drop table if exists test2;create table test2 (c1 int(11) default NULL,c2 varchar(30) default NULL);insert into test2 values(1,'a'),(2,'b'),(3,'c');insert into test2 select * from test2;
看看效果
百万级也就是几十秒到一两分钟的事
当然,要在java里用jdbc写代码也行,尽量避免循环insert操作,最好先拼接好sql,一次执行,毕竟每次都io太耗时,也可以把自动提交给关了,调用conn.setAutoCommit(false),再循环插。。
over
0 0
- mysql 插入百万级数据 简单靠谱的方法
- php向mysql数据库插入百万级数据的两种方法效率比较
- mysql 百万级数据插入更新速度问题(转)
- java中JDBC实现往MySQL插入百万级数据的实例代码
- java中JDBC实现往MySQL插入百万级数据的实例代码
- mysql百万级数据优化
- mysql 对于百万 千万级数据的分表实现方法
- SQL Server 插入百万级数据
- mysql存入百万级数据速度慢的解决方法
- mysql分页百万级数据的优化方案
- 百万级数据下的mysql深度解析
- 处理百万级数据提高查询速度的方法
- Mysql 百万级数据优化资料
- Mysql 百万级数据优化资料
- mysql百万级数据查询优化
- MySql百万级数据库优化方案
- MySQL百万级数据库优化方案
- Mysql 百万级数据优化资料
- 聊聊并发(一)——深入分析Volatile的实现原理
- 装饰模式--动态添加装饰物(结构型模式03)
- PHP解析析全路径字符串
- 求众数
- target无法生成,creating bean with name
- mysql 插入百万级数据 简单靠谱的方法
- Linux进程间通信——使用数据报套接字
- day17_dataSource
- 随意改变图片大小的脚本
- JavaScript的闭包到底是什么
- c++类对象调用privated
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
- sublime text3 插件
- Swing 各种提示框