您好,欢迎访问一九零五行业门户网

mysql压力测试脚本实例_MySQL

本文实例讲述了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数据库程序设计有所帮助。
其它类似信息

推荐信息