本文实例讲述了mysql压力测试的脚本,分享给大家供大家参考。具体如下:
创建表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 $$
这里我创建了一个函数.
代码如下:
create function rand_string(n int)
returns varchar(255)
begin
declare chars_str varchar(100) default
'abcdefghijklmnopqrstuvwxyzabcdefjhijklmnopqrstuvwxyz';
declare return_str varchar(255) default '';
declare i int default 0;
while i 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 $$
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 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,1800000);
向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);
希望本文所述对大家的mysql数据库程序设计有所帮助。