热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql循环创建表_详解MySQL如何按表创建千万级的压测数据

有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表

有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据。

1. 准备测试表

CREATE TABLE `username` (

`uid` INT( 11 ) UNSIGNED NOT NULL default 1235678901,

`username` VARCHAR( 20 ) ,

`email` VARCHAR( 30 ) ,

`password` VARCHAR( 32 ) ,

`birthday` date,

`gender` VARCHAR(10) ,

avatar MEDIUMBLOB,

PRIMARY KEY ( `uid` )

) ENGINE=INNODBDEFAULTCHARSET=utf8;

2. 随机生成数据

MySQL里面自带一个随机数生成的函数RAND(),它能生成0-1的浮点数

RAND函数生成随机数:

606194.htm

SET GLOBALlog_bin_trust_function_creators=1;

CREATE DEFINER= `root` @`%` FUNCTION `rand_string` ( n INT ) RETURNS VARCHAR ( 255 ) CHARSET utf8 BEGIN

DECLARE

chars_str VARCHAR ( 100 ) DEFAULT 'hwbtestABCDEFG23141HIJ6712dfghjkqwevbnqmwerqwerqwreqw214123e1214c12dssaf89';

DECLARE

return_str VARCHAR ( 255 ) DEFAULT '';

DECLARE

i INT DEFAULT 0;

WHILE

SET return_str=concat( return_str, substring( chars_str, FLOOR( 1 + RAND( ) * 80 ), 1 ) );

SET ii= i + 1;

END WHILE;

RETURN return_str;

END;

606194.htm

CREATEDEFINER= `root` @`%` FUNCTION `randDate` ( ) RETURNS VARCHAR ( 255 ) CHARSET utf8 BEGIN

DECLARE

aDate CHAR ( 10 ) DEFAULT '';

/*CONCAT (1949 + FLOOR( ( RAND( ) * 70 ) ) 表示 1949到2019的随机数据

--L PAD ( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ) 表示月份的生成,小于 10自动补0

--L PAD ( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 ) ) 表示 3号到10号的随机数据 */

SET aDate=CONCAT(

1949 + FLOOR( ( RAND( ) * 70 ) ),

'-',

LPAD( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ),

'-',

LPAD( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 )

);

RETURN aDate;

END;

606194.htm

Returns the string str:str, left-padded with the string padstr to a length of len characters.

If str is longer than len:N, the return value is shortened to len characters.

mysql>SELECT LPAD('hi',4,'??');

->'??hi'

mysql>SELECT LPAD('hi',1,'??');

->'h'

(2) DATETIME类型

在刚刚写好的randDate上进行改造:

CREATEDEFINER= `root` @`%` FUNCTION `randDateTime` ( ) RETURNS VARCHAR ( 255 ) CHARSET utf8 BEGIN

DECLARE

aDateTime CHAR ( 19 ) DEFAULT '';

SET aDateTime=CONCAT(

CONCAT(

1949 + FLOOR( ( RAND( ) * 70 ) ),

'-',

LPAD( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ),

'-',

LPAD( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 )

),

' ',

CONCAT(

LPAD( FLOOR( 0 + ( RAND( ) * 23 ) ), 2, 0 ),

':',

LPAD( FLOOR( 0 + ( RAND( ) * 60 ) ), 2, 0 ),

':',

LPAD( FLOOR( 0 + ( RAND( ) * 60 ) ), 2, 0 )

)

);

RETURN aDateTime;

END;

5. 将数据循环插入

定义将数据循环的存储过程:

DELIMITER //

CREATE PROCEDURE insertUser ( )

BEGIN

DECLARE

num INT;

SET num=1;

WHILE

num <100000DO

INSERT INTO username ( uid,username, email, PASSWORD, birthday, gender, avatar )

VALUES

( num,

rand_string ( 15 ),

concat( rand_string ( 5 ), &#39;&#64;qq.com&#39; ),

rand_string ( 32 ),

randDate ( ),

&#39;男&#39;,

NULL

);

SET numnum&#61; num &#43; 1;

END WHILE;

commit;

END;

//

调用存储过程&#xff1a;

CALL insertUser;

【编辑推荐】

【责任编辑&#xff1a;赵宁宁 TEL&#xff1a;(010)68476606】

点赞 0



推荐阅读
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 以下两种传参的方式哪个更好? ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • php设置数组大小_【大厂必备】2020超经典PHP面试题
    结合我自己这段时间的面试情况,面对的一些php面试题列举出来,基本上结合自己的看法回答的,不妥的地方请大家指出去,与大家一起 ... [详细]
  • mysql自动打开文件_让docker中的mysql启动时自动执行sql文件
    本文提要本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动My ... [详细]
  • 目录4.1.type数据类型检测 ... [详细]
  • 介绍平常在多线程开发中,总避免不了线程同步。本篇就对net多线程中的锁系统做个简单描述。目录一:lock、Monitor1:基础 ... [详细]
  • MySQL修改表结构操作命令总结【MySQL】
    数据库|mysql教程MySQL,修改表结构命令数据库-mysql教程表的结构如下:错误页面源码,ubuntu电脑自动休眠,爬虫造景视频,rapapiphp,廊坊seo开发lzwm ... [详细]
author-avatar
MR付的世界
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有