性能测试四十:Mysql存储过程造数据
性能测试是基于大量数据的,而进行性能测试之前肯定没那么多数据,所以就要自己准备数据
数据构造方法:
1.业务接口
-- 适合数据表关系复杂
-- 优点:数据完整性比较好
2.存储过程
-- 适合表数量少,简单
-- 优点:速度最快
3.脚本导入
-- 适合数据逻辑复杂
-- 自由度比较高
4.数据量级
--测试数据
--基础数据
启动并用工具连接mysql,这里的新建函数,所建的函数,即为存储过程
也可以在命令行mysql -u root -p 登录后输入存储过程的sql运行,但是这就是纯命令行了
执行truncate teacher清空表,再使用存储过程造数据
造数据:选过程
表里的字段:card_no, name, sex, age, course, created, modified
要造的数据的条件:插入10000 条数据,其中:card_no, name,age,均不重复,
要用到的函数:
DECLARE i INT DEFAULT 0; --定义一个变量i,给个默认值:0,也可以不给默认值(把DEFAULT 0去掉即可)
循环10000次:
WHILE i<10001 DO
sql语句;
SET i = i+1; --mysql存储过程中,变量自增只支持这个格式,不支持i++
END WHILE;
NOW():当前时间
ONCAT(str1,str2,...):拼接函数,把str1、str2、···拼接起来
rand() :随机生成一个0--1之间的小数
取整:
round() 遵循四舍五入把原值转化为指定小数位数,如:round(1.45,0) = 1;round(1.55,1)=1.6
floor()向下取整 如:floor(1.45,0)= 1;floor(1.55,0) = 1
ceiling()向上取整 如:ceiling(1.45,0) = 2;ceiling(1.55,0)=2
age:这里只需要取个100以下的整数就行了,所以:FLOOR(RAND()*100)
-- 取n--m
FLOOR(RAND()*(m-n)+n);
存储过程语句:
BEGIN
DECLARE i INT DEFAULT 0;-- 定义一个变量i,给个默认值:0,也可以不给默认值(把DEFAULT 0去掉即可)
DECLARE p_sex VARCHAR(4);
DECLARE p_course VARCHAR(4);
WHILE i<10001 DO
if i%2=0 THEN
SET p_sex = 'M'; -- i为偶数时,性别为男
SET p_course = 'Eng'; -- i为偶数时,课程为英语
ELSE
SET p_sex = 'W'; -- i为奇数时,性别为女
SET p_course = 'Math'; -- i为奇数时,课程为数学
END IF;
-- card_no = 1000+i
-- name = test_i
-- sex = p_sex
-- age = FLOOR(RAND()*100) 取个100以下的整数
-- course = p_course
INSERT INTO teacher (card_no, name, sex, age, course, created, modified) VALUES (10000+i,CONCAT('test_',i),p_sex,FLOOR(RAND()*100),p_course, NOW(), NOW());
SET i = i+1; -- mysql存储过程中,变量自增只支持这个格式,不支持i++
END WHILE;
END
保存 点运行:
稍等一会即可
存储过程造数据非常方便,应用也很广泛,但是不适合逻辑很复杂的数据结构,遇到不知道怎么实现时,网上都能找到
性能测试四十:Mysql存储过程造数据的更多相关文章
- mysql存储过程造数据取一个基准用户的各种类型都取一条数据作为基准数据,循环插入
CREATE DEFINER=`user`@`%` PROCEDURE `create_upload_data`(in start_userid integer,in create_counter i ...
- Mysql 存储过程造测试数据
1.Mysql 存储过程造测试数据 -- 创建一个用户表 CREATE TABLE `sys_user` ( -- `id` CHAR (32) NOT NULL DEFAULT '' COMMENT ...
- MYSQL进阶学习笔记四:MySQL存储过程之定义条件,处理过程及存储过程的管理!(视频序号:进阶_11,12)
知识点五:MySQL存储过程之定义条件和处理过程及存储过程的管理(11,12) 定义条件和处理: 条件的定义和处理可以用来定义在处理过程中遇到的问题时相应的处理步骤. DECLARE CONTINUE ...
- Python学习日记(四十) Mysql数据库篇 八
Mysql存储过程 存储过程是保存在Mysql上的一个别名(就是一堆SQL语句),使用别名就可以查到结果不用再去写SQL语句.存储过程用于替代程序员写SQL语句. 创建存储过程 delimiter / ...
- mysql存储过程造数
性能测试时,数据库表通常需要很多数据,此时我们可以用存储过程来造数,以下代码mysql.Oracle都可以用 首先,先查看数据库表的设计,可以看到每张表有多少字段,分别都是什么类型,哪个字段是自动增长 ...
- mysql 存储过程 实现数据同步
数据库 表 发生变化,需要把2.0的表数据 同步到3.0库中去: -- 同步数据存储过程执行 -- 更新留言旧表数据到新表数据中 /*DEFINER:Vector*/ drop procedure i ...
- 性能测试四十九:ngrinder压测平台
下载地址:https://sourceforge.net/projects/ngrinder/files/ ngrinder工作原理:这里的controller就是ngrinder平台 部署(以win ...
- 性能测试四十八:Jenkins+Ant+Jmeter系统部署
工作步骤: 1.开发提交代码SVN/Git 2.代码编译.打war包 3.上传war包到服务器 4.重启web服务器 5.开始测试/自动化测试 6.发测试结果 Jenkins工作: 1.开发提交代码G ...
- 性能测试四十二:sql案例之联合索引最左前缀
联合索引:一个索引同时作用于多个字段 联合索引的最左前缀: A.B.C3个字段--联合索引 这个时候,可以使用的查询条件有:A.A+B.A+C.A+B+C,唯独不能使用B+C,即最左侧那个字段必须匹配 ...
随机推荐
- java的排序类 Collections
场景:比如说有一个List<Student> 里面有许多学生 我们想让这些学生按照年龄的大小排序 我们可以用java自带的 java.util.Collections 工具类来实现 Col ...
- JAVA记录-添加错误页面友好提示
1.web.xml加入以下配置 <error-page> <error-code>404</error-code> <location>/WEB-INF ...
- golang基础数据结构链表
链表 链表(Linked list),是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer). 每个节点包含下一个节点的地址,这样把所有的节点串起来了, ...
- 使用MedleyText与Syncthink自建云笔记
随着学习加深,做的笔记越来越多,而使用云笔记怕万一平台关闭(如360网盘啥的)还需要导出笔记费时费力,并且多平台兼容性未知.还是自己搭建放心省事. MedleyText介绍 MedleyText为ma ...
- android studio 统一管理版本号配置
1.在android 的根目录新建一个versions.gradle 2.在这里面声明 各个第三方库的版本,写法有两种,第一种,写ext 扩展, 引用的时候, 第二种: 然后在project级的bui ...
- java Future模式的使用
一.Future模式的使用. Future模式简述 传统单线程环境下,调用函数是同步的,必须等待程序返回结果后,才可进行其他处理. Futrue模式下,调用方式改为异步. Futrue模式的核心在于: ...
- WF控制台工作流(2)
using System; using System.Linq; using System.Activities; using System.Activities.Statements; namesp ...
- Linux 查看文件编码
查看某个文件的编码格式:使用 vi 编辑器 打开文件: 按 Esc 输入 ” : set fileencoding “ 就会显示出来 文件的编码格式 : set fileencoding
- [CQOI2012]组装 (贪心)
CQOI2012]组装 solution: 蒟蒻表示并不会模拟退火,所以用了差分数组加贪心吗.我们先来看题: 在数轴上的某个位置修建一个组装车间 到组装车间距离的平方的最小值. 1<=n< ...
- 【加密】Md5Util
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Md5U ...