最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL實(shí)現(xiàn)批量插入測(cè)試數(shù)據(jù)的方式總結(jié)

 更新時(shí)間:2023年05月12日 16:15:12   作者:寧軒  
在開發(fā)過程中經(jīng)常需要一些測(cè)試數(shù)據(jù),?這個(gè)時(shí)候如果手敲的話,?十行二十行還好,?多了就很死亡了,?接下來介紹兩種常用的MySQL測(cè)試數(shù)據(jù)批量生成方式,希望對(duì)大家有所幫助

前言

在開發(fā)過程中我們不管是用來測(cè)試性能還是在生產(chǎn)環(huán)境中頁面展示好看一點(diǎn), 又或者學(xué)習(xí)驗(yàn)證某一知識(shí)點(diǎn)經(jīng)常需要一些測(cè)試數(shù)據(jù), 這個(gè)時(shí)候如果手敲的話, 十行二十行還好, 多了就很死亡了, 接下來介紹兩種常用的MySQL測(cè)試數(shù)據(jù)批量生成方式

  • 存儲(chǔ)方式+函數(shù)
  • Navicat的數(shù)據(jù)生成

準(zhǔn)備了兩張表 角色表:

  • id: 自增長(zhǎng)
  • role_name: 隨機(jī)字符串, 不允許重復(fù)
  • orders: 1-1000任意數(shù)字

用戶表:

  • id: 自增長(zhǎng)
  • username: 隨機(jī)字符串, 不允許重復(fù)
  • password: 隨機(jī)字符串, 允許重復(fù)
  • role_id: 1-10w之間的任意數(shù)字

建表語句:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL COMMENT '用戶名',
  `role_id` int(11) DEFAULT NULL COMMENT '角色id',
  `password` varchar(255) DEFAULT NULL COMMENT '密碼',
  `salt` varchar(255) DEFAULT NULL COMMENT '鹽',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role_name` varchar(255) DEFAULT NULL COMMENT '角色名',
  `orders` int(11) DEFAULT NULL COMMENT '排序權(quán)重\r\n',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

使用函數(shù)生成

通過存儲(chǔ)過程快速插入, 通過函數(shù)保證數(shù)據(jù)不重復(fù)

設(shè)置允許創(chuàng)建函數(shù)

查看 MySQL是否允許創(chuàng)建函數(shù)

SHOW VARIABLES LIKE 'log_bin_trust_function_creators';

結(jié)果如圖所示, 我們使用以下命令將創(chuàng)建函數(shù)功能打開(global-所有session都生效)

SET GLOBAL log_bin_trust_function_creators=1; 

這個(gè)時(shí)候再一次查詢就會(huì)顯示已打開

產(chǎn)生隨機(jī)字符串

-- 隨機(jī)產(chǎn)生字符串
DELIMITER $$
CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)
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 $$
-- 假如要?jiǎng)h除
-- drop function rand_string;

產(chǎn)生隨機(jī)數(shù)字

-- 用于隨機(jī)產(chǎn)生區(qū)間數(shù)字
DELIMITER $$
CREATE FUNCTION rand_num (from_num INT ,to_num INT) RETURNS INT(11)
BEGIN   
 DECLARE i INT DEFAULT 0;  
 SET i = FLOOR(from_num +RAND()*(to_num -from_num+1));
RETURN i;  
END$$
-- 假如要?jiǎng)h除
-- drop function rand_num;

創(chuàng)建存儲(chǔ)過程

插入角色表

-- 插入角色數(shù)據(jù)
DELIMITER $$
CREATE PROCEDURE insert_role(max_num INT)
BEGIN  
	DECLARE i INT DEFAULT 0;   
	SET autocommit = 0;    
	REPEAT  
		SET i = i + 1;  
		INSERT INTO role ( role_name,orders ) VALUES (rand_string(8),rand_num(1,5000)); 
		UNTIL i = max_num  
	END REPEAT;  
	COMMIT;  
END$$
-- 刪除
-- DELIMITER ;
-- drop PROCEDURE insert_role;

插入用戶表

-- 插入用戶數(shù)據(jù)
DELIMITER $$
CREATE PROCEDURE  insert_user(START INT, max_num INT)
BEGIN  
	DECLARE i INT DEFAULT 0;   
	SET autocommit = 0;    
	REPEAT  
		SET i = i + 1;  
		INSERT INTO user (username, role_id, password, salt ) VALUES (rand_string(8) ,rand_num(1,100000), rand_string(10), rand_string(10));  
		UNTIL i = max_num  
	END REPEAT;  
	COMMIT;  
END$$
-- 刪除
-- DELIMITER ;
-- drop PROCEDURE insert_user;

執(zhí)行存儲(chǔ)過程

-- 執(zhí)行存儲(chǔ)過程,往dept表添加10萬條數(shù)據(jù)
CALL insert_role(100000); 
-- 執(zhí)行存儲(chǔ)過程,往emp表添加100萬條數(shù)據(jù),編號(hào)從100000開始
CALL insert_user(100000,1100000); 

總結(jié)

執(zhí)行用時(shí) 10w數(shù)據(jù)差不多半分鐘, 100w數(shù)據(jù)超過了20分鐘, 同時(shí) user的存儲(chǔ)還卡死很久...

最后都成功新增, 但是自動(dòng)遞增值和行數(shù)不一致, 這個(gè)我也不知道因?yàn)樯?..

數(shù)據(jù)展示

role表

user表

使用 Navicat自帶的數(shù)據(jù)生成

接下來我們使用 Navicat的數(shù)據(jù)生成

直接下一步, 然后選擇對(duì)應(yīng)的兩張表生成行數(shù)和對(duì)應(yīng)的生成規(guī)則, 基于之前的執(zhí)行速度, 這次 role生成 1w數(shù)據(jù), user生成 10w數(shù)據(jù)

對(duì)于字符串類型的字段, 我們可以設(shè)置他的隨機(jī)數(shù)據(jù)生成器, 根據(jù)需要進(jìn)行選擇

例如角色名稱, 選擇了 職位名稱 還可以進(jìn)行是否包含 null 的選擇等

但是如果是 姓名 那么就會(huì)讓你選擇是否唯一

數(shù)字的話會(huì)讓你選擇范圍, 默認(rèn)值等

等確定好了, 我們就可以點(diǎn)擊右下角進(jìn)行生成隨機(jī)測(cè)試數(shù)據(jù)

通過結(jié)果可以看到生成十一萬測(cè)試數(shù)據(jù)一共用時(shí)十一秒, 比第一種方法速度快很多, 推薦使用

到此這篇關(guān)于MySQL實(shí)現(xiàn)批量插入測(cè)試數(shù)據(jù)的方式總結(jié)的文章就介紹到這了,更多相關(guān)MySQL插入數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL查詢字段為NULL、不為NULL的數(shù)據(jù)問題

    MySQL查詢字段為NULL、不為NULL的數(shù)據(jù)問題

    介紹了MySQL查詢字段為NULL和不為NULL的數(shù)據(jù)時(shí)需要注意的幾點(diǎn),包括查詢語句的編寫和NULL與其他字符的操作,通過實(shí)際操作對(duì)比,指出使用IS NOT NULL可以正確查詢到非NULL字段的數(shù)據(jù)
    2025-02-02
  • mysql數(shù)據(jù)庫(kù)互為主從配置方法分享

    mysql數(shù)據(jù)庫(kù)互為主從配置方法分享

    共有四臺(tái)機(jī)器:A(10.1.10.28),B(10.1.10.29),C(10.1.10.30),D(10.1.10.31)。配置后結(jié)果:A-C互為主從,B為A的slave,D為C的slave
    2012-03-03
  • MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))

    MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù))

    這篇文章主要介紹了MySQL模糊查詢用法大全(正則、通配符、內(nèi)置函數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 探討:sql插入空,默認(rèn)1900-01-01 00:00:00.000的解決方法詳解

    探討:sql插入空,默認(rèn)1900-01-01 00:00:00.000的解決方法詳解

    本篇文章是對(duì)sql插入空,默認(rèn)1900-01-01 00:00:00.000的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Mysql查詢語句詳細(xì)總結(jié)大全

    Mysql查詢語句詳細(xì)總結(jié)大全

    這篇文章主要給大家介紹了關(guān)于Mysql查詢語句詳細(xì)總結(jié)的相關(guān)資料,MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它支持SQL語言進(jìn)行數(shù)據(jù)查詢,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)過程?procedure

    MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)過程?procedure

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)過程?procedure,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • mysql數(shù)據(jù)庫(kù)中的索引類型和原理解讀

    mysql數(shù)據(jù)庫(kù)中的索引類型和原理解讀

    這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)中的索引類型和原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL數(shù)據(jù),查詢QPS,TPS數(shù)據(jù)方式

    MySQL數(shù)據(jù),查詢QPS,TPS數(shù)據(jù)方式

    文章詳細(xì)介紹了查詢MySQL數(shù)據(jù)庫(kù)QPS和TPS的方法和工具,包括直接通過命令行、PerformanceSchema、mysqladmin、Prometheus、自動(dòng)化腳本等,同時(shí),還提供了優(yōu)化建議,如索引優(yōu)化、SQL調(diào)優(yōu)、事務(wù)控制和配置調(diào)優(yōu)
    2025-02-02
  • MySQL的安裝以及基本的管理命令和設(shè)置

    MySQL的安裝以及基本的管理命令和設(shè)置

    這篇文章主要介紹了MySQL的安裝以及基本的管理命令和設(shè)置,是搭建MySQL環(huán)境的基礎(chǔ),需要的朋友可以參考下
    2015-11-11
  • mysql Key_buffer_size參數(shù)的優(yōu)化設(shè)置

    mysql Key_buffer_size參數(shù)的優(yōu)化設(shè)置

    mysql數(shù)據(jù)庫(kù)中有許多重要的參數(shù),其中mysql key_buffer_size是對(duì)MyISAM表性能影響最大的一個(gè)參數(shù),下面就讓我們一起來了解一下
    2014-12-12

最新評(píng)論

会宁县| 乌兰浩特市| 德化县| 海宁市| 平武县| 思茅市| 新疆| 双桥区| 安国市| 马鞍山市| 阜新| 翁牛特旗| 高淳县| 高碑店市| 西乌| 卓尼县| 中江县| 饶平县| 闵行区| 东丽区| 大方县| 宁国市| 子洲县| 上高县| 久治县| 古丈县| 视频| 宁阳县| 竹溪县| 图片| 荥经县| 拜泉县| 阿坝县| 徐水县| 南召县| 隆林| 蚌埠市| 昭觉县| 新乐市| 瑞安市| 南雄市|