• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql快速插入千万条数据的实战教程

    一.创建数据库

    二.创建表

    1.创建 dept表

    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表

    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';

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

    SET GLOBAL log_bin_trust_function_creators=1;

    四.创建函数

    1.随机产生字符串

    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.随机产生部门编号

    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表存储过程

    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表存储过程

    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.先执行十条

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

    执行成功!

    2.查看数据

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

    3.执行百万插入

    CALL insert_dept(10001,1000000);

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

    欧克 睡觉 

    总结

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

    您可能感兴趣的文章:
    • mysql大批量插入数据的4种方法示例
    • mysql中迅速插入百万条测试数据的方法
    • MySql中把一个表的数据插入到另一个表中的实现代码
    • 用一条mysql语句插入多条数据
    • mysql如果数据不存在,则插入新数据,否则更新的实现方法
    • mysql中插入表数据中文乱码问题的解决方法
    • mysql数据库插入速度和读取速度的调整记录
    • MYSQL批量插入数据的实现代码
    • mysql技巧:提高插入数据(添加记录)的速度
    • mysql 一次向表中插入多条数据实例讲解
    上一篇:mysql-joins具体用法说明
    下一篇:Windows下通过cmd进入DOS窗口访问MySQL数据库
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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