美文网首页
mysql 存储过程-批量造数据

mysql 存储过程-批量造数据

作者: collincp | 来源:发表于2021-03-05 16:58 被阅读0次

    研究sql岂能不需要大量数据,故整理了一份批量造数据的笔记。

    -- 创建表 kk_test
    CREATE TABLE `kk_test`
    (
        `id`           INT(11)     NOT NULL AUTO_INCREMENT,
        `randomString` VARCHAR(20) NOT NULL,
        `randomNumber` INT(11)     NOT NULL,
        `create_time`  datetime    NOT NULL,
        PRIMARY KEY (`id`),
        KEY `index_id` (`randomString`) USING HASH
    ) ENGINE = MEMORY
      AUTO_INCREMENT = 1
      DEFAULT CHARSET = utf8;
    -- 查看表是否创建成功-显示表名,表模式和 创建时间
    SELECT table_name,TABLE_SCHEMA,CREATE_TIME FROM information_schema.TABLES WHERE table_name ='kk_test';
    -- 删除表
    DROP TABLE kk_test;
    -- 查看非系统库函数有哪些,如果有,不需要创建 DB为库名称,系统库勿动
    show FUNCTION status where Db != 'sys';
    -- 创建随机字符串函数
    CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1
    BEGIN
        DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        DECLARE return_str varchar(255) DEFAULT '' ;
        DECLARE i INT DEFAULT 0;
        WHILE i < n DO
                SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
                SET i = i +1;
            END WHILE;
        RETURN return_str;
    END;
    -- 查看刚创建的函数是否存在
    show FUNCTION status WHERE name='rand_string';
    -- 删除函数
    drop FUNCTION rand_string;
    
    -- 插入数据 确定 语法正确
    INSERT into kk_test  (randomString,randomNumber,create_time ) VALUEs (rand_string(20),FLOOR(RAND() * 1000),now() );
    SELECT *  from kk_test ;-- 查看数据是否生成
    -- 创建存储过程
    delimiter $$
    drop procedure if exists add_kk_test;
    CREATE  PROCEDURE `add_kk_test`(IN n int)
    BEGIN
        DECLARE i INT DEFAULT 1;
        WHILE (i <= n ) DO
                INSERT into kk_test  (randomString,randomNumber,create_time ) VALUEs (rand_string(20),FLOOR(RAND() * 1000),now() );
                set i=i+1;
            END WHILE;
    END;$$
    -- 启动存储过程。 第一次尽量一上来就别创建过万级数据,容易卡死
    call add_kk_test(123456);
    -- **************结束,等待结果*******************
    
    -- 补充 查看当前用户连接,当连接过大或者创建数据过大卡死,进行删除 ;删除相关ID 即可删除对应过程
    show processlist ;
    kill 33;
    
    

    相关文章

      网友评论

          本文标题:mysql 存储过程-批量造数据

          本文链接:https://www.haomeiwen.com/subject/bfxdqltx.html