作为一名测试工程师,造这种存量数据,一般都是压测的时候需要一些存量数据。我平时用Jmeter比较多,比较少用到MYSQL的存储过程,最近浏览博客,看到有人用这个方式造数据,就趁机体验了一把。

一般的压测存量数据都是通过如下几种方式:

  1. 通过接口造存量数据
  2. 通过JMETER MySQL脚本发起批量数据
  3. 通过MySQL 存储过程造存量数据。

优点 VS 缺点

模式 优点 缺点
1. 通过接口造存量数据 数据比较接近真实场景 流程比较长,耗时比较久
2. 通过JMETER MySQL脚本发起批量数据 脚本配置简单,上手容易 数据假,跟实际发生的数据出入比较大
3. 通过MySQL 存储过程造存量数据。 批量生成数据的耗时短 需要准备存储过程脚本,调试、有一定的门槛

这段创建函数的,我没有用到,做个笔记后续用到的时候可以用一下。

创建函数

CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1
BEGIN
DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE return_str varchar(255) DEFAULT '' ;
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END

创建存储过程以及调用存储过程

DELIMITER $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
DROP PROCEDURE test_pp $$ #不知道为何,只要用IF EXISTS很容易报错,所以此处干脆不用。
CREATE PROCEDURE test_pp(IN n INTEGER)
BEGIN
DECLARE i INT DEFAULT 1;# can not be 0
WHILE i<n DOINSERT INTO risk_controller_record(`app_id`, `controll_key``) VALUES (CONCAT("TEST",i), CONCAT("controll_key_test",i));SET i=i+1;
END WHILE ;
END $$
DELIMITER ;;CALL test_pp(100);在定义过程时,使用 DELIMITER $$ 命令将语句的结束符号从分号 ; 临时改为两个$$,使得过程体中使用的分号被直接传递到服务器,而不会被客户端(如mysql)解释。

一些常用的MySQL函数需要知道

http://www.runoob.com/mysql/mysql-functions.html

MySQL函数 说明
CONCAT(s1,s2…sn) 字符串 s1,s2 等多个字符串合并为一个字符串合并多个字符串
TRIM(s) 去掉字符串 s 开始和结尾处的空格
UPPER(s) 将字符串转换为大写
ABS(x) 返回 x 的绝对值
FLOOR(x) 返回小于或等于 x 的最大整数
CEILING(x) 返回大于或等于 x 的最小整数
GREATEST(expr1, expr2, expr3, …) 返回列表中的最大值
LEAST(expr1, expr2, expr3, …) 返回列表中的最小值
RAND() 返回 0 到 1 的随机数
ROUND(x) 返回离 x 最近的整数
TRUNCATE(x,y) 返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
ADDDATE(d,n) 计算起始日期 d 加上 n 天的日期
ADDTIME(t,n) 时间 t 加上 n 秒的时间
CURRENT_DATE() 返回当前日期
CURDATE() 返回当前日期
CURRENT_TIMESTAMP() 返回当前日期和时间
DAY(d) 返回日期值 d 的日期部分
DAYNAME(d) 返回日期 d 是星期几,如 Monday,Tuesday
LOCALTIME() 返回当前日期和时间
LOCALTIMESTAMP() 返回当前日期和时间

利用MYSQL存储过程批量造数据相关推荐

  1. mysql测试数据100w_利用MySQL存储过程批量插入100W条测试数据

    这里将告诉您利用MySQL存储过程批量插入100W条测试数据,具体完成步骤:DROP PROCEDURE IF EXISTS insert_batch; CREATE PROCEDURE insert ...

  2. mysql 存储过程 批量导入数据_sql 利用存储过程批量导入数据

    什么是 存储过程(stored procedure)是一组为了完成特定功能的sql语句集,是利用sql server所提供的transact-sql语言所编写的程序.经编译后存储在中.存储过程是数据库 ...

  3. MySQL存储过程批量插入数据

    文章目录 1. 怎么写出来的?踩了哪些坑 1.1 新建存储过程的语法 1.2 声明变量 1.3 存储过程参数 1.4 WHILE循环 1.5 写存储过程 1. 怎么写出来的?踩了哪些坑 因为阿里Jav ...

  4. MySQL存储过程 — 解析 XML 数据并实现插入操作

    MySQL存储过程 - 解析 XML 数据并实现插入操作 一.概述: 最近在做项目的过程中,需要利用MySQL存储过程 解析 XML数据并进行插入操作,因此就学习了下.MySQL 解析 XML 的思路 ...

  5. 软件测试如何批量造数据

    测试过程中,经常用到批量造数据的场景:准备大量测试数据.执行压测等等. 比如说,你要模拟1000个用户同时发短信,那么你需要先创建1000个不同手机号的用户,直接在页面上造数据显然是不太现实的. 如果 ...

  6. mysql同步binlog_利用MySQL的Binlog实现数据同步与订阅(下)

    利用MySQL的Binlog实现数据同步与订阅(下)​blog.yuanpei.me 终于到这个系列的最后一篇,在前两篇博客中,我们分别了介绍了Binlog的概念和事件总线(EventBus)的实现, ...

  7. 利用MySQL存储过程分割字符串

    2019独角兽企业重金招聘Python工程师标准>>> MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如a ...

  8. mysql存储过程批量建表

    asif mysql存储过程批量建表 用MySql的存储过程建立100张表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  9. mysql数据库大量造数据

    1.准备一条插入sql: INSERT INTO `t_game_record`(`id`, `game_id`, `viewer_id`, `guess_price`, `status`, `cre ...

最新文章

  1. Python3创建目录文件夹
  2. 通过仿真和综合认识T触发器(Verilog HDL语言描述T触发器)
  3. Python使用xlrd和xlwt读取和写入excel详细教程
  4. [UE4]C++实现动态加载的问题
  5. python找工作难吗-为什么我不建议你通过 Python 去找工作?
  6. 建造者模式(Builder Pattern)(转自TerryLee)
  7. 51nod 1022 石子合并v2
  8. [pytorch、学习] - 4.4 自定义层
  9. IPHONE 开发 7 -- Object C 02 字符串NSString 与 char* ,字符串的遍历,字符串的比较,截取与大小写改变,搜索字符串与替换字符串...
  10. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表
  11. JS 获取浏览器窗口大小
  12. 抓取Crash不让崩溃
  13. 数据科学(data science)概览
  14. python-3高级特征
  15. Eclipse中如何让Java类与Servlet产生关联【实现处理请求内容】
  16. RFC 6528 翻译
  17. 【源码好又多】开源在线教育系统
  18. loading图片实现等待的动画
  19. COPC酞菁钴,cAS号:3317-67-7磺化酞菁钴 催化剂 深蓝色粉末 磺化酞菁钴
  20. 什么是uni-app

热门文章

  1. 字符串中取数求和(1)
  2. fastcopy 命令行参数解释
  3. 海量数据及多云环境下,数据库运维、分布式转型、国产化改造实践丨DAMS峰会(文末有福利)
  4. 【javaWeb】Struts 2导出excel文件
  5. layUi框架入门篇(三)
  6. Node Pacific专访:做节点需要怎样一种格局?
  7. 为什么obs没有声音波动_车载蓝牙连接好了为什么没有声音
  8. video 取消默认的单击暂停视频
  9. Oracle期中考试上机试题
  10. python基础梳理(十三)递归函数、递归函数写法以及练习