黑帽联盟

 找回密码
 会员注册
查看: 1731|回复: 0
打印 上一主题 下一主题

[mysql] mysql压力测试脚本

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    #创建表DEPT
    CREATE TABLE dept( /*部门表*/
    deptno MEDIUMINT   UNSIGNED  NOT NULL  DEFAULT 0,
    dname VARCHAR(20)  NOT NULL  DEFAULT "",
    loc VARCHAR(13) NOT NULL DEFAULT ""
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;


    #创建表EMP雇员
    CREATE TABLE emp
    (empno  MEDIUMINT UNSIGNED  NOT NULL  DEFAULT 0, /*编号*/
    ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
    job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/
    mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/
    hiredate DATE NOT NULL,/*入职时间*/
    sal DECIMAL(7,2)  NOT NULL,/*薪水*/
    comm DECIMAL(7,2) NOT NULL,/*红利*/
    deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/
    )ENGINE=MyISAM DEFAULT CHARSET=utf8 ;


    #工资级别表
    CREATE TABLE salgrade
    (
    grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
    losal DECIMAL(17,2)  NOT NULL,
    hisal DECIMAL(17,2)  NOT NULL
    )ENGINE=MyISAM DEFAULT CHARSET=utf8;


    INSERT INTO salgrade VALUES (1,700,1200);
    INSERT INTO salgrade VALUES (2,1201,1400);
    INSERT INTO salgrade VALUES (3,1401,2000);
    INSERT INTO salgrade VALUES (4,2001,3000);
    INSERT INTO salgrade VALUES (5,3001,9999);


    # 随机产生字符串
    #定义一个新的命令结束符合
    delimiter $$
    #删除自定的函数
    drop  function rand_string $$


    #这里我创建了一个函数.


    #rand_string(n INT) rand_string 是函数名 (n INT) //该函数接收一个整数
    create function rand_string(n INT)
    returns varchar(255) #该函数会返回一个字符串
    begin
    #chars_str定义一个变量 chars_str,类型是 varchar(100),默认值'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
    declare chars_str varchar(100) default
       'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
    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()*52),1));
       set i = i + 1;
       end while;
      return return_str;
      end $$




    delimiter ;
    select rand_string(6);


    # 随机产生部门编号
    delimiter $$
    drop  function rand_num $$


    #这里我们又自定了一个函数
    create function rand_num( )
    returns int(5)
    begin
    declare i int default 0;
    set i = floor(10+rand()*500);
    return i;
      end $$




    delimiter ;
    select rand_num();


    #******************************************
    #向emp表中插入记录(海量的数据)




    delimiter $$
    drop procedure insert_emp $$




    #随即添加雇员[光标]  400w
    create procedure insert_emp(in start int(10),in max_num int(10))
    begin
    declare i int default 0;
    #set autocommit =0 把autocommit设置成0
    set autocommit = 0;  
    repeat
    set i = i + 1;
    insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
      until i = max_num
    end repeat;
       commit;
    end $$




    delimiter ;
    #调用刚刚写好的函数, 1800000条记录,从100001号开始
    call insert_emp(100001,4000000);




    #**************************************************************
    #  向dept表中插入记录


    delimiter $$
    drop procedure insert_dept $$




    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 values ((start+i) ,rand_string(10),rand_string(8));
      until i = max_num
    end repeat;
       commit;
    end $$


    delimiter ;
    call insert_dept(100,10);


    #------------------------------------------------
    #向salgrade 表插入数据
    delimiter $$
    drop procedure insert_salgrade $$
    create procedure insert_salgrade(in start int(10),in max_num int(10))
    begin
    declare i int default 0;
    set autocommit = 0;
    ALTER TABLE emp DISABLE KEYS;  
    repeat
    set i = i + 1;
    insert into salgrade values ((start+i) ,(start+i),(start+i));
      until i = max_num
    end repeat;
       commit;
    end $$
    delimiter ;
    #测试不需要了
    #call insert_salgrade(10000,1000000);

    #----------------------------------------------


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部