mysql自动生成大量数据
程序员文章站
2022-06-25 08:42:40
[toc] mysql自动生成大量数据 为了学习验证高性能mysql,自动生成大量的数据做测试。内容来源于网络。 创建随机数字生成 DELIMITER $$ CREATE DEFINER= @`% random_num`( ) RETURNS int(5) BEGIN DECLARE i INT D ......
目录
mysql自动生成大量数据
为了学习验证高性能mysql,自动生成大量的数据做测试。内容来源于网络。
创建随机数字生成
delimiter $$ create definer=`root`@`%` function `random_num`( ) returns int(5) begin declare i int default 0; set i = floor(100+rand()*10); return i; end$$ delimiter ;
生成随机字符串
delimiter $$ create definer=`root`@`%` function `random_string`(n int) returns varchar(255) charset latin1 begin declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzabcdefjhijklmnopqrstuvwxyz'; 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()*52),1)); set i = i + 1; end while; return return_str; end$$ delimiter ;
生成随机数字,返回varchar类型数据组合,例如手机号
delimiter $$ create definer=`root`@`%` function `random_string_phone`(n int) returns varchar(255) charset latin1 begin declare chars_str varchar(100) default '1234567890'; 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()*10),1)); set i = i + 1; end while; return return_str; end$$ delimiter ;
创建用户表myisam引擎
create table `sys_user_myisam` ( `user_id` bigint(100) not null auto_increment, `username` varchar(100) default null comment '用户名', `password` varchar(100) default null comment '密码', `salt` varchar(100) default null comment '盐', `email` varchar(100) default null comment '邮箱', `mobile` varchar(100) default null comment '手机号', `status` int(1) default '1' comment '状态 0:禁用 1:正常', primary key (`user_id`) ) engine=myisam auto_increment=1000001 default charset=utf8 comment='系统用户myisam';
创建存储过程生成数据
delimiter $$ create definer=`root`@`%` procedure `insert_sys_user_myisam`(in start int(10),in max_num int(10)) begin declare i int default 0; set autocommit = 0; repeat set i = i + 1; insert into sys_user_myisam (user_id,username,password,salt,email,mobile,status) values (start+i,random_string(10),random_string(6),random_string(10),random_string(20),random_string_phone(12),1); until i = max_num end repeat; commit; end$$ delimiter ;
创建表innodb引擎
create table sys_user_innodb engine=myisam auto_increment=1000001 default charset=utf8 as select * from sys_user_myisam;