分享mysql压力测试脚本


SQL #mysql #压力测试2012-11-17 22:06
001#创建表DEPT
002 
003CREATE TABLE dept( /*部门表*/
004deptno MEDIUMINT   UNSIGNED  NOT NULL  DEFAULT 0,
005dname VARCHAR(20)  NOT NULL  DEFAULT "",
006loc VARCHAR(13) NOT NULL DEFAULT ""
007) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
008 
009#创建表EMP雇员
010CREATE TABLE emp
011(empno  MEDIUMINT UNSIGNED  NOT NULL  DEFAULT 0,
012ename VARCHAR(20) NOT NULL DEFAULT "",
013job VARCHAR(9) NOT NULL DEFAULT "",
014mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
015hiredate DATE NOT NULL,
016sal DECIMAL(7,2)  NOT NULL,
017comm DECIMAL(7,2) NOT NULL,
018deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0
019)ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
020 
021#工资级别表
022CREATE TABLE salgrade
023(
024grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
025losal DECIMAL(17,2)  NOT NULL,
026hisal DECIMAL(17,2)  NOT NULL
027)ENGINE=MyISAM DEFAULT CHARSET=utf8;
028 
029INSERT INTO salgrade VALUES (1,700,1200);
030INSERT INTO salgrade VALUES (2,1201,1400);
031INSERT INTO salgrade VALUES (3,1401,2000);
032INSERT INTO salgrade VALUES (4,2001,3000);
033INSERT INTO salgrade VALUES (5,3001,9999);
034 
035# 随机产生字符串
036#定义一个新的命令结束符合
037delimiter $$
038#删除自定的函数
039drop  function rand_string $$
040 
041#这里我创建了一个函数.
042 
043create function rand_string(n INT)
044returns varchar(255)
045begin
046 declare chars_str varchar(100) default
047   'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
048 declare return_str varchar(255) default '';
049 declare i int default 0;
050 while i < n do
051   set return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1));
052   set i = i + 1;
053   end while;
054  return return_str;
055  end $$
056 
057 
058delimiter ;
059select rand_string(6);
060 
061# 随机产生部门编号
062delimiter $$
063drop  function rand_num $$
064 
065#这里我们又自定了一个函数
066create function rand_num( )
067returns int(5)
068begin
069 declare i int default 0;
070 set i = floor(10+rand()*500);
071return i;
072  end $$
073 
074 
075delimiter ;
076select rand_num();
077 
078#******************************************
079#向emp表中插入记录(海量的数据)
080 
081 
082delimiter $$
083drop procedure insert_emp $$
084 
085create procedure insert_emp(in start int(10),in max_num int(10))
086begin
087declare i int default 0;
088 set autocommit = 0; 
089 repeat
090 set i = i + 1;
091 insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
092  until i = max_num
093 end repeat;
094   commit;
095 end $$
096 
097 
098delimiter ;
099#调用刚刚写好的函数, 1800000条记录,从100001号开始
100call insert_emp(100001,1800000);
101 
102 
103#**************************************************************
104#  向dept表中插入记录
105 
106delimiter $$
107drop procedure insert_dept $$
108 
109 
110create procedure insert_dept(in start int(10),in max_num int(10))
111begin
112declare i int default 0;
113 set autocommit = 0; 
114 repeat
115 set i = i + 1;
116 insert into dept values ((start+i) ,rand_string(10),rand_string(8));
117  until i = max_num
118 end repeat;
119   commit;
120 end $$
121 
122 
123delimiter ;
124call insert_dept(100,10);
125 
126#------------------------------------------------
127#向salgrade 表插入数据
128delimiter $$
129drop procedure insert_salgrade $$
130create procedure insert_salgrade(in start int(10),in max_num int(10))
131begin
132declare i int default 0;
133 set autocommit = 0;
134 ALTER TABLE emp DISABLE KEYS; 
135 repeat
136 set i = i + 1;
137 insert into salgrade values ((start+i) ,(start+i),(start+i));
138  until i = max_num
139 end repeat;
140   commit;
141 end $$
142delimiter ;
143#测试不需要了 http://yige.org
144#call insert_salgrade(10000,1000000);
145 
146#----------------------------------------------

相关文章

粤ICP备11097351号-1