mysql存储过程构造性能测试数据
Posted 七月的小尾巴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql存储过程构造性能测试数据相关的知识,希望对你有一定的参考价值。
前言
通常在性能测试过程中,我们需要根据不同的业务场景构造测试数据,比如我们要压测下单的接口,那么我们需要大量的注册用户,通常我们可以直接去调用接口创建测试用户,当然我们也可以直接通过sql往数据库插入数据。
mysql存储过程构造用户数据
接口直接创建数据相信对大家来说都非常简单,下面我们来看一下,如果通过sql构造数据。
首先,我们先来看一下插入注册用户的sql,这是一条非常简单的insert语句。
INSERT INTO es_member(
parentid ,
lv_id ,
uname ,
email ,
PASSWORD ,
regtime ,
NAME ,
sex ,
advance ,
point ,
mp ,
lastlogin ,
registerip ,
recommend_point_state ,
info_full,
midentity
)
VALUES
(
0 ,
1 ,
'testfan_2' ,
'testfan_2@qq.com' ,
'e10adc3949ba59abbe56e057f20f883e' ,
1504404027 ,
'testfan' ,
0 ,
0.00 ,
55 ,
55 ,
1504403027 ,
'192.168.1.111' ,
0 ,
0 ,
0
);
但是下面我们可以看到像用户名、邮箱这一类的数据,对于我们的业务而言,他们必须是唯一的,插入重复的数据显然是不合理的,下面我们可以通过创建存储过程,通过函数来实现我们的需求。
下面我们可以通过新建函数,来实现我们的需求,见如下代码:
BEGIN
# 定义变量i,并且设置默认值为0
DECLARE i INT DEFAULT 0;
# 定义用户名变量
DECLARE user_name VARCHAR(20);
# 定义邮箱变量
DECLARE user_email VARCHAR(20);
# 定义性别变量
DECLARE user_sex INT;
# while循环 10000次,构造1w个用户
WHILE i<10000 DO
# 使用 CONCAT 函数,实现字符串相加
SET user_name = CONCAT('test_', i);
SET user_email = CONCAT('test_',i,'@qq.com');
# 判断当 i 为奇数时, 则为女用户
IF i%2 = 0 THEN
SET user_sex = 0;
# 判断为偶数时,则为男用户
ELSE
SET user_sex = -1;
# 这里 if 条件判断之后,需要加上DO IF
END IF;
INSERT INTO es_member(
parentid ,
lv_id ,
uname ,
email ,
PASSWORD ,
regtime ,
NAME ,
sex ,
advance ,
point ,
mp ,
lastlogin ,
registerip ,
recommend_point_state ,
info_full,
midentity
)
VALUES
(
0 ,
1 ,
# 设置变量名
user_name ,
user_email ,
'e10adc3949ba59abbe56e057f20f883e' ,
1504404027 ,
user_name ,
user_sex ,
0.00 ,
55 ,
55 ,
1504403027 ,
'192.168.1.111' ,
0 ,
0 ,
0
);
# 这个和while循环一下,每次循环都要+,否则会进入死循环
SET i = i + 1;
END WHILE;
END
执行上方的函数,我们来看看数据库插入的数据,我创建了5个用户,可以看到都数据都创建成功了。
以上是关于mysql存储过程构造性能测试数据的主要内容,如果未能解决你的问题,请参考以下文章