成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解MySQL如何按表創建千萬級的壓測數據

數據庫 MySQL
有時我們要對系統做壓測,或者數據庫壓力測試,這時候需要對某些表插入幾百萬或者上千萬數據,下面介紹下怎么利用MySQL循環和存儲過程對特定表的創建千萬行數據。

有時我們要對系統做壓測,或者數據庫壓力測試,這時候需要對某些表插入幾百萬或者上千萬數據,下面介紹下怎么利用MySQL循環和存儲過程對特定表的創建千萬行數據。

1. 準備測試表

  1. CREATE TABLE `username` ( 
  2.     `uid` INT( 11 ) UNSIGNED NOT NULL default 1235678901, 
  3.     `username` VARCHAR( 20 ) , 
  4.     `email` VARCHAR( 30 ) , 
  5.     `password` VARCHAR( 32 ) , 
  6.     `birthday` date, 
  7.     `gender` VARCHAR(10) , 
  8.     avatar MEDIUMBLOB, 
  9.     PRIMARY KEY ( `uid` ) 
  10. ENGINE = INNODB DEFAULT CHARSET=utf8

2. 隨機生成數據

MySQL里面自帶一個隨機數生成的函數RAND(),它能生成0-1的浮點數

RAND函數生成隨機數:

詳解MySQL如何按表創建<span><span><span><i style=千萬級的壓測數據" src="http://p3.pstatp.com/large/pgc-image/18a9e01795184b6b9230e47f707ee6a9" width="348" height="148">

3. 隨機生成給定數目的字符串

這里用mysql循環,循環采用WHILE循環,循環里面采用字符串拼接函數CONCAT

  1. SET GLOBAL log_bin_trust_function_creators = 1;  
  2. CREATE DEFINER = `root` @`%` FUNCTION `rand_string` ( n INT ) RETURNS VARCHAR ( 255 ) CHARSET utf8 BEGIN 
  3.     DECLARE 
  4.         chars_str VARCHAR ( 100 ) DEFAULT 'hwbtestABCDEFG23141HIJ6712dfghjkqwevbnqmwerqwerqwreqw214123e1214c12dssaf89'; 
  5.     DECLARE 
  6.         return_str VARCHAR ( 255 ) DEFAULT ''; 
  7.     DECLARE 
  8.         i INT DEFAULT 0; 
  9.     WHILE 
  10.             i < n DO 
  11.              
  12.             SET return_str = concat( return_str, substring( chars_str, FLOOR( 1 + RAND( ) * 80 ), 1 ) ); 
  13.          
  14.         SET ii = i + 1; 
  15.          
  16.     END WHILE; 
  17. RETURN return_str; 
  18. END; 

詳解MySQL如何按表創建<span><span><span><i style=千萬級的壓測數據" src="http://p9.pstatp.com/large/pgc-image/d8d78674aade489ebe63e79b6e807417" width="640" height="349">

用戶名和密碼都可以通過以上的方式添加。

郵箱的添加方式:可直接在insert的value對應字段寫上concat(rand_string(5), '@qq.com')

4. 隨機生成DATE和DATETIME類型

(1) DATE類型

  1. CREATE DEFINER = `root` @`%` FUNCTION `randDate` ( ) RETURNS VARCHAR ( 255 ) CHARSET utf8 BEGIN 
  2.     DECLARE 
  3.         aDate CHAR ( 10 ) DEFAULT ''; 
  4. /*CONCAT (1949 + FLOOR( ( RAND( ) * 70 ) ) 表示 1949到2019的隨機數據  
  5.     --L PAD ( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ) 表示月份的生成,小于 10自動補0  
  6.     --L PAD ( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 ) ) 表示 3號到10號的隨機數據 */ 
  7.      
  8.     SET aDate = CONCAT
  9.         1949 + FLOOR( ( RAND( ) * 70 ) ), 
  10.         '-', 
  11.         LPAD( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ), 
  12.         '-', 
  13.         LPAD( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 )  
  14.     ); 
  15. RETURN aDate; 
  16. END; 

詳解MySQL如何按表創建<span><span><span><i style=千萬級的壓測數據" src="http://p1.pstatp.com/large/pgc-image/80b27cacdcd84a749f35acaecc805e8d" width="640" height="409">

關于LPAD函數,具體做為月份和日期的補零作用!生效如下介紹:

  1. Returns the string str:str, left-padded with the string padstr to a length of len characters.  
  2. If str is longer than len:N, the return value is shortened to len characters. 
  3. mysql> SELECT LPAD('hi',4,'??'); 
  4. -> '??hi' 
  5. mysql> SELECT LPAD('hi',1,'??'); 
  6. -> 'h' 

(2) DATETIME類型

在剛剛寫好的randDate上進行改造:

  1. CREATE DEFINER = `root` @`%` FUNCTION `randDateTime` ( ) RETURNS VARCHAR ( 255 ) CHARSET utf8 BEGIN 
  2.     DECLARE 
  3.         aDateTime CHAR ( 19 ) DEFAULT ''; 
  4.      
  5.     SET aDateTime = CONCAT
  6.         CONCAT( 
  7.             1949 + FLOOR( ( RAND( ) * 70 ) ), 
  8.             '-', 
  9.             LPAD( FLOOR( 1 + ( RAND( ) * 12 ) ), 2, 0 ), 
  10.             '-', 
  11.             LPAD( FLOOR( 3 + ( RAND( ) * 8 ) ), 2, 0 )  
  12.         ), 
  13.         ' ', 
  14.         CONCAT( 
  15.             LPAD( FLOOR( 0 + ( RAND( ) * 23 ) ), 2, 0 ), 
  16.             ':', 
  17.             LPAD( FLOOR( 0 + ( RAND( ) * 60 ) ), 2, 0 ), 
  18.             ':', 
  19.             LPAD( FLOOR( 0 + ( RAND( ) * 60 ) ), 2, 0 )  
  20.         )  
  21.     ); 
  22. RETURN aDateTime; 
  23. END; 

5. 將數據循環插入

定義將數據循環的存儲過程:

  1. DELIMITER // 
  2. CREATE PROCEDURE insertUser ( )  
  3. BEGIN 
  4.     DECLARE 
  5.         num INT; 
  6.      
  7.     SET num = 1
  8.     WHILE 
  9.             num < 100000 DO 
  10.             INSERT INTO username ( uid,username, email, PASSWORD, birthday, gender, avatar ) 
  11.         VALUES 
  12.             ( num, 
  13.                 rand_string ( 15 ), 
  14.                 concat( rand_string ( 5 ), '@qq.com' ), 
  15.                 rand_string ( 32 ), 
  16.                 randDate ( ), 
  17.                 '男', 
  18.             NULL  
  19.             ); 
  20.          
  21.         SET numnum = num + 1; 
  22.          
  23.     END WHILE; 
  24.     commit; 
  25. END; 
  26. // 

調用存儲過程:

  1. CALL insertUser; 
責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2025-03-31 01:55:00

2018-07-30 14:40:01

MySQLSQL查詢

2019-12-13 11:51:34

技術AI云計算

2019-08-19 00:14:12

網絡測試帶寬網絡流量

2010-09-10 13:37:30

表分區SQL Server

2021-03-05 13:30:51

MySQL數據庫壓測工具

2020-12-03 09:57:34

MySQL壓測工具數據庫

2021-02-03 14:51:34

MySQL數據庫壓測工具

2017-10-31 09:43:31

2020-06-17 08:55:22

mysqlslapsysbenchMySQL

2014-11-25 11:37:17

壓測 軟件測試

2018-07-26 14:50:00

數據庫MySQL大表優化

2010-11-22 13:53:46

MySQL數據表

2014-07-10 10:33:47

CoolHash引擎壓測

2023-01-16 08:09:22

PulsarMQ

2022-11-25 18:49:11

云原生

2025-05-09 08:30:00

2025-05-07 08:20:00

Flink壓測大數據

2019-09-22 21:34:59

數據庫平滑變更表結構

2020-08-06 08:00:51

數據分頁優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情一区二区三区 | 亚洲国产成人精品久久 | 成人一级视频在线观看 | 国产成人一区二区三区 | 亚洲男人天堂av | av在线一区二区三区 | 久久精品国产免费 | 国产成人叼嘿视频在线观看 | 91福利在线观看 | 欧美一区二区大片 | 欧美在线a | 草草视频在线播放 | 久久国产精品无码网站 | 狠狠做深爱婷婷综合一区 | 在线亚洲人成电影网站色www | 国产精品国产成人国产三级 | 天天玩天天干天天操 | 美女在线一区二区 | 一区二区在线不卡 | 在线精品一区二区三区 | 成人av看片 | 成人午夜激情 | 亚洲精品一区二三区不卡 | 免费一区| 免费看黄色国产 | 久久精品视频99 | 91免费入口| 欧美激情精品久久久久久 | 免费黄色大片 | 国产日产久久高清欧美一区 | 91精品国产综合久久婷婷香蕉 | 国产一在线| 狠狠干网| 欧美日韩成人在线 | 欧美精品在线观看 | 免费同性女女aaa免费网站 | 懂色av一区二区三区在线播放 | 特一级黄色毛片 | 毛片a级| 久久国产精品99久久久久久丝袜 | 国产一区免费 |