MySQL存储过程批量生成假用户电话号码_mysql

????????‍????博主介绍:大家好,我是芝士味的椒盐,一名在校大学生,热爱分享知识,很高兴在这里认识大家????

????擅长领域:Java、大数据、运维、电子

????????如果本文章各位小伙伴们有帮助的话,????关注+????????点赞+????评论+????收藏,相应的有空了我也会回访,互助!!!

????另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!



目录


​缘由​

​场景​

​实际操作​


缘由

在传统像shell编写的脚本之类的批量读写MySQL的时候效率较低,而存储过程在MySQL中是预编代码,存于MySQL之中内部执行,使用存储过程操作MySQL显然比外界脚本程序传送过去要高效很多。存储过程适应高质量大,复杂而且有规律的MySQL操作。

场景

现在有一张ums_member表存储着某个商城用户的id、会员等级id、用户名、密码、昵称、手机号码等等消息,现在商城需要进行整体高流量用户的并发测试,需要生成5200个模拟用户进行压力测试,其中最主要手机号码的生产需要注意。

实际操作

  • 面对这样一张表:
    ​CREATE TABLE `sh` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `level_id` bigint(20) DEFAULT NULL COMMENT '会员等级id', `username` char(64) DEFAULT NULL COMMENT '用户名', `password` varchar(64) DEFAULT NULL COMMENT '密码', `nickname` varchar(64) DEFAULT NULL COMMENT '昵称', `mobile` varchar(20) DEFAULT NULL COMMENT '手机号码', `email` varchar(64) DEFAULT NULL COMMENT '邮箱', `header` varchar(500) DEFAULT NULL COMMENT '头像', `gender` tinyint(4) DEFAULT NULL COMMENT '性别', `birth` date DEFAULT NULL COMMENT '生日', `city` varchar(500) DEFAULT NULL COMMENT '所在城市', `job` varchar(255) DEFAULT NULL COMMENT '职业', `sign` varchar(255) DEFAULT NULL COMMENT '个性签名', `source_type` tinyint(4) DEFAULT NULL COMMENT '用户来源', `integration` int(11) DEFAULT NULL COMMENT '积分', `growth` int(11) DEFAULT NULL COMMENT '成长值', `status` tinyint(4) DEFAULT NULL COMMENT '启用状态', `create_time` datetime DEFAULT NULL COMMENT '注册时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=5200 DEFAULT CHARSET=utf8mb4 COMMENT='会员' ​
  • 我需要生成任意数量的假用户,很明显使用Mysql自带的存储过程是最方便的
  • 创建存储过程:
    ​CREATE PROCEDURE `insert_ums_member`(IN n INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE level INT DEFAULT 1; DECLARE user_prefix varchar(255) DEFAULT ''; #固定用户密码 DECLARE user_passwd varchar(255) DEFAULT '$2a$10$6CLrbjXcDW7Z3NphKgen6e9ZOSrSZKqdUlrPmLHjc5/7O/M7CKnlm'; DECLARE user_phone varchar(255) DEFAULT ''; WHILE i < n DO SET user_prefix = concat('user', i); #生成手机号码 SET user_phone = CONCAT('1',CEILING(RAND()*9000000000+1000000000)); INSERT INTO `ums_member`(level_id, username, password, nickname, mobile) VALUES (level,user_prefix,user_passwd,user_prefix,user_phone); SET i = i + 1; END WHILE; END; ​
  • 删除存储过程
    ​#删除存储过程 DROP PROCEDURE `insert_ums_member`; ​
  • 使用存储过程生产5200个用户
    ​CALL insert_ums_member(5200); ​