利用MYSQL存储过程批量造数据
作为一名测试工程师,造这种存量数据,一般都是压测的时候需要一些存量数据。我平时用Jmeter比较多,比较少用到MYSQL的存储过程,最近浏览博客,看到有人用这个方式造数据,就趁机体验了一把。
一般的压测存量数据都是通过如下几种方式:
- 通过接口造存量数据
- 通过JMETER MySQL脚本发起批量数据
- 通过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存储过程批量造数据相关推荐
- mysql测试数据100w_利用MySQL存储过程批量插入100W条测试数据
这里将告诉您利用MySQL存储过程批量插入100W条测试数据,具体完成步骤:DROP PROCEDURE IF EXISTS insert_batch; CREATE PROCEDURE insert ...
- mysql 存储过程 批量导入数据_sql 利用存储过程批量导入数据
什么是 存储过程(stored procedure)是一组为了完成特定功能的sql语句集,是利用sql server所提供的transact-sql语言所编写的程序.经编译后存储在中.存储过程是数据库 ...
- MySQL存储过程批量插入数据
文章目录 1. 怎么写出来的?踩了哪些坑 1.1 新建存储过程的语法 1.2 声明变量 1.3 存储过程参数 1.4 WHILE循环 1.5 写存储过程 1. 怎么写出来的?踩了哪些坑 因为阿里Jav ...
- MySQL存储过程 — 解析 XML 数据并实现插入操作
MySQL存储过程 - 解析 XML 数据并实现插入操作 一.概述: 最近在做项目的过程中,需要利用MySQL存储过程 解析 XML数据并进行插入操作,因此就学习了下.MySQL 解析 XML 的思路 ...
- 软件测试如何批量造数据
测试过程中,经常用到批量造数据的场景:准备大量测试数据.执行压测等等. 比如说,你要模拟1000个用户同时发短信,那么你需要先创建1000个不同手机号的用户,直接在页面上造数据显然是不太现实的. 如果 ...
- mysql同步binlog_利用MySQL的Binlog实现数据同步与订阅(下)
利用MySQL的Binlog实现数据同步与订阅(下)blog.yuanpei.me 终于到这个系列的最后一篇,在前两篇博客中,我们分别了介绍了Binlog的概念和事件总线(EventBus)的实现, ...
- 利用MySQL存储过程分割字符串
2019独角兽企业重金招聘Python工程师标准>>> MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如a ...
- 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 ...
- mysql数据库大量造数据
1.准备一条插入sql: INSERT INTO `t_game_record`(`id`, `game_id`, `viewer_id`, `guess_price`, `status`, `cre ...
最新文章
- 从请求管道深入剖析HttpModule的实现机制,有图有真相
- windows Redis绑定ip无效,Redis设置密码无效,Windows Redis 配置不生效, Windows Redis requirepass不生效...
- DIV CSS兼容性解决IE6/IE7/FF浏览器的通用方法完美兼容
- 从0开始搭建ELK及采集日志的简单应用
- test libvirt
- 网易云的朋友给我这份339页的Android面经,成功入职阿里
- cass或cad里提取点坐标及高程的插件_一个坐标计算小程序 EXCEL 可以进行抵偿任意带高斯坐标转换...
- CVPR2021-RSTNet:自适应Attention的“看图说话”模型
- 避免软件失败的7个关键实践——来自项目管理群的讨论
- Linux下读写UART串口的代码
- linux中文件带方块,JFreeChart图片里的中文在linux下显示为方块的解决办法
- VMware Workstation12安装win 7企业版激活
- mouseover和mouseenter区别
- Jpa是什么——Jpa使用详解
- 纯CSS实现正方体旋转效果
- Selenium如何使用句柄方式切换窗口?
- FFMPEG框架学习——(2)视频的提取和解码
- 【基于MapReduce的成绩分析系统】——计算每门课程的平均成绩、最高成绩、最低成绩
- Android 10 SystemUI 如何添加4G信号和WiFi图标
- [Win32]Win32 SDK编程系列文章——键盘输入消息
热门文章
- ESP32运行microPython报错:rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee
- ‘芯’系物联网,STM32物联网方案一览
- mysql replicate函数_【MySQL】主从复制参数“--replicate-do-*”请谨慎使用
- python 实现爬取指定小说(两种实现方案 .附源码)
- 简述WPS独立定制安全性与WPS流程人工任务权限分配
- 测试三角化,利用直接线性变换法求三维点坐标(三维重建task2-1)
- 淘宝经验!商品关键词手机端排名查询
- 低温等离子体技术的应用
- Java刷题面试系列习题(二十一)
- 软件测试从业者要懂点字符编码