成人免费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-02-03 14:51:34

MySQL數據庫壓測工具

2021-03-05 13:30:51

MySQL數據庫壓測工具

2020-12-03 09:57:34

MySQL壓測工具數據庫

2017-10-31 09:43:31

2014-11-25 11:37:17

壓測 軟件測試

2020-06-17 08:55:22

mysqlslapsysbenchMySQL

2014-07-10 10:33:47

CoolHash引擎壓測

2018-07-26 14:50:00

數據庫MySQL大表優化

2010-11-22 13:53:46

MySQL數據表

2022-11-25 18:49:11

云原生

2023-01-16 08:09:22

PulsarMQ

2025-05-09 08:30:00

2025-05-07 08:20:00

Flink壓測大數據

2020-08-06 08:00:51

數據分頁優化

2019-09-22 21:34:59

數據庫平滑變更表結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色五月激情五月 | 久久精品国产99国产精品 | 欧美一级黄| 欧美黑人国产人伦爽爽爽 | 亚洲一区二区网站 | 91精品在线观看入口 | 日韩一区三区 | 紧缚调教一区二区三区视频 | 国产精品欧美一区二区三区 | 日韩一区二区三区四区五区六区 | 欧美精品久久久久久 | 美女黄视频网站 | 黑人成人网 | 精品亚洲一区二区三区四区五区高 | 亚洲综合天堂 | 国产美女久久 | 三级av在线 | 日韩亚洲视频 | 97成人免费 | av网站观看 | 亚洲国产欧美一区 | 欧美一区二区三区在线观看视频 | 成人h视频在线 | 成人精品一区二区三区 | 午夜精品三区 | 一区二区三区欧美 | 中文字幕一区二区三区日韩精品 | 一久久久 | 国产精品久久亚洲 | 乱一性一乱一交一视频a∨ 色爱av | 欧美日韩在线观看一区二区三区 | 四虎影院在线观看免费视频 | 亚洲人人 | 国产成人精品综合 | 国产在线观看一区二区 | 久久久久久久久99精品 | 91资源在线| 精品成人| 国产99精品 | 亚洲国产成人精品女人久久久 | 黄色在线免费观看 |