您的位置:首页 > 数据库 > > 正文

mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

更多 时间:2021-10-22 07:37:09 类别:数据库 浏览量:232

mysql快速添加百万条记录

Mysql快速插入千万条数据的实战教程

一.创建数据库

mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

二.创建表

1.创建 dept表

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • create table `dept` (
  •  `id` int(11) not null,
  •  `deptno` mediumint(9) default null,
  •  `dname` varchar(20) default null,
  •  `loc` varchar(13) default null,
  •  primary key (`id`)
  • ) engine=innodb default charset=utf8;
  • 2.创建emp表

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • create table `emp` (
  •  `id` int(11) not null,
  •  `empon` mediumint(9) default null comment '编号',
  •  `ename` varchar(20) default null,
  •  `job` varchar(9) default null,
  •  `mgr` mediumint(9) default null comment '上级编号',
  •  `hirdate` datetime default null comment '入职时间',
  •  `sal` decimal(7,2) default null comment '薪水',
  •  `comm` decimal(7,2) default null comment '红利',
  •  `deptno` mediumint(9) default null comment '部门编号',
  •  primary key (`id`)
  • ) engine=innodb default charset=utf8;
  • 三.设置参数

    show variables like 'log_bin_trust_function_creators';

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    默认关闭.  需要设置为1。因为表中设置 mediumint 字段 创建函数可能会报错

    set global log_bin_trust_function_creators=1;

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    四.创建函数

    1.随机产生字符串

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • delimiter $
  • create function rand_str(n int) returns varchar(255)
  • begin
  •  declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwsyzabcdefghijklmnopqrstuvwxyz';
  •      declare return_str varchar(255) default '';
  •  declare i int default 0;
  •      while i< n do
  •      set return_str =coucat(return_str,substring(chars_str,floor(1+rand()*52),1));
  •      set i= i+1;
  •  end while;
  •      return return_str;
  • end $
  • 2.随机产生部门编号

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • delimiter $
  • create function rand_num() returns int(5)
  • begin
  •  declare i int default 0;
  •      set i= floor(100+rand()*10);
  •      return i;
  • end $
  • 五.创建存储过程

    1. emp表存储过程

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • delimiter $
  • create procedure insert_emp(in start int(10),in max_num int(10))
  • begin
  •   declare i int default 0;
  •         set autocommit = 0;
  •         repeat #重复
  •         set i = i + 1;
  •         insert into emp(empon,ename,job,mgr,hiredate,sal,comm,depton) values ((start+i),rand_str(6),'salesman',0001,curdate(),2000,400,rand_num());
  •      until i = max_num
  •  end repeat;
  •      commit;
  • end $
  • 2.dept表存储过程

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • delimiter $
  • create procedure insert_dept(in start int(10),in max_num int(10))
  • begin
  •   declare i int default 0;
  •         set autocommit = 0;
  •         repeat #重复
  •         set i = i + 1;
  •         insert into dept(deptno,dname,loc) values ((start+i),rand_str(10),rand_str(8));
  •      until i = max_num
  •  end repeat;
  •      commit;
  • end $
  • 六.执行

    1.先执行十条

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    这个错误是一个小坑 发现了吗 我之前留下的  根据提示 去排查吧 

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    执行成功!

    2.查看数据

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    重头戏来喽!  一次性干他百万条数据  赌一把 看看会不会玩崩了

    3.执行百万插入

    call insert_dept(10001,1000000);

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    400s跑百万数据  一秒2500条    我这配置太垃圾  以前测试的是一秒一万 最好50w跑一次

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    mysql快速添加百万条记录(Mysql快速插入千万条数据的实战教程)

    欧克 睡觉 

    总结

    到此这篇关于mysql快速插入千万条数据的文章就介绍到这了,更多相关mysql插入千万条数据内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!

    原文链接:https://blog.csdn.net/LiuY521/article/details/114273793

    标签:mysql 数据 插入
    您可能感兴趣