Mysql快速插入千万条数据的实战教程
一.创建数据库
二.创建表
1.创建dept表
CREATETABLE`dept`( `id`int(11)NOTNULL, `deptno`mediumint(9)DEFAULTNULL, `dname`varchar(20)DEFAULTNULL, `loc`varchar(13)DEFAULTNULL, PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
2.创建emp表
CREATETABLE`emp`( `id`int(11)NOTNULL, `empon`mediumint(9)DEFAULTNULLCOMMENT'编号', `ename`varchar(20)DEFAULTNULL, `job`varchar(9)DEFAULTNULL, `mgr`mediumint(9)DEFAULTNULLCOMMENT'上级编号', `hirdate`datetimeDEFAULTNULLCOMMENT'入职时间', `sal`decimal(7,2)DEFAULTNULLCOMMENT'薪水', `comm`decimal(7,2)DEFAULTNULLCOMMENT'红利', `deptno`mediumint(9)DEFAULTNULLCOMMENT'部门编号', PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8;
三.设置参数
SHOWVARIABLESLIKE'log_bin_trust_function_creators';
默认关闭. 需要设置为1。因为表中设置mediumint字段创建函数可能会报错
SETGLOBALlog_bin_trust_function_creators=1;
四.创建函数
1.随机产生字符串
DELIMITER$ CREATEFUNCTIONRAND_STR(nINT)RETURNSVARCHAR(255) BEGIN DECLAREchars_strVARCHAR(100)DEFAULT'abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; DECLAREreturn_strVARCHAR(255)DEFAULT''; DECLAREiINTDEFAULT0; WHILEi2.随机产生部门编号
DELIMITER$ CREATEFUNCTIONRAND_num()RETURNSINT(5) BEGIN DECLAREiINTDEFAULT0; SETi=FLOOR(100+RAND()*10); RETURNi; END$五.创建存储过程
1.emp表存储过程
DELIMITER$ CREATEPROCEDUREinsert_emp(INSTARTINT(10),INmax_numINT(10)) BEGIN DECLAREiINTDEFAULT0; SETautocommit=0; REPEAT#重复 SETi=i+1; INSERTINTOemp(empon,ename,job,mgr,hiredate,sal,comm,depton)VALUES((START+i),RAND_STR(6),'SALESMAN',0001,CURDATE(),2000,400,RAND_num()); UNTILi=max_num ENDREPEAT; COMMIT; END$2.dept表存储过程
DELIMITER$ CREATEPROCEDUREinsert_dept(INSTARTINT(10),INmax_numINT(10)) BEGIN DECLAREiINTDEFAULT0; SETautocommit=0; REPEAT#重复 SETi=i+1; INSERTINTOdept(deptno,dname,loc)VALUES((START+i),RAND_STR(10),RAND_STR(8)); UNTILi=max_num ENDREPEAT; COMMIT; END$六.执行
1.先执行十条
这个错误是一个小坑发现了吗我之前留下的 根据提示去排查吧
执行成功!
2.查看数据
重头戏来喽! 一次性干他百万条数据 赌一把看看会不会玩崩了
3.执行百万插入
CALLinsert_dept(10001,1000000);
400s跑百万数据 一秒2500条 我这配置太垃圾 以前测试的是一秒一万最好50W跑一次
欧克睡觉
总结
到此这篇关于Mysql快速插入千万条数据的文章就介绍到这了,更多相关Mysql插入千万条数据内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。