作为一名测试工程师,造这种存量数据,一般都是压测的时候需要一些存量数据。我平时用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. 从请求管道深入剖析HttpModule的实现机制,有图有真相
  2. windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效, Windows Redis requirepass不生效...
  3. DIV CSS兼容性解决IE6/IE7/FF浏览器的通用方法完美兼容
  4. 从0开始搭建ELK及采集日志的简单应用
  5. test libvirt
  6. 网易云的朋友给我这份339页的Android面经,成功入职阿里
  7. cass或cad里提取点坐标及高程的插件_一个坐标计算小程序 EXCEL 可以进行抵偿任意带高斯坐标转换...
  8. CVPR2021-RSTNet:自适应Attention的“看图说话”模型
  9. 避免软件失败的7个关键实践——来自项目管理群的讨论
  10. Linux下读写UART串口的代码
  11. linux中文件带方块,JFreeChart图片里的中文在linux下显示为方块的解决办法
  12. VMware Workstation12安装win 7企业版激活
  13. mouseover和mouseenter区别
  14. Jpa是什么——Jpa使用详解
  15. 纯CSS实现正方体旋转效果
  16. Selenium如何使用句柄方式切换窗口?
  17. FFMPEG框架学习——(2)视频的提取和解码
  18. 【基于MapReduce的成绩分析系统】——计算每门课程的平均成绩、最高成绩、最低成绩
  19. Android 10 SystemUI 如何添加4G信号和WiFi图标
  20. [Win32]Win32 SDK编程系列文章——键盘输入消息

热门文章

  1. ESP32运行microPython报错:rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee
  2. ‘芯’系物联网,STM32物联网方案一览
  3. mysql replicate函数_【MySQL】主从复制参数“--replicate-do-*”请谨慎使用
  4. python 实现爬取指定小说(两种实现方案 .附源码)
  5. 简述WPS独立定制安全性与WPS流程人工任务权限分配
  6. 测试三角化,利用直接线性变换法求三维点坐标(三维重建task2-1)
  7. 淘宝经验!商品关键词手机端排名查询
  8. 低温等离子体技术的应用
  9. Java刷题面试系列习题(二十一)
  10. 软件测试从业者要懂点字符编码