午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL制作具有千萬條測(cè)試數(shù)據(jù)的測(cè)試庫的方法

瀏覽:138日期:2023-10-08 13:54:33

有時(shí)候需要制造一些測(cè)試的數(shù)據(jù),以mysql官方給的測(cè)試庫為基礎(chǔ),插入十萬,百萬或者千萬條數(shù)據(jù)。利用一些函數(shù)和存儲(chǔ)過程來完成。

官方給的測(cè)試庫地址:https://github.com/datacharmer/test_db

導(dǎo)入官方的數(shù)據(jù)庫,做了一些簡化,留下了部門表,員工表和雇傭表三張表,去掉了外鍵關(guān)聯(lián)。因?yàn)槭菧y(cè)試數(shù)據(jù),日期的對(duì)應(yīng)關(guān)系不具備準(zhǔn)確性。

必要的函數(shù)

生成隨機(jī)字符串

RAND():生成0~1之間的隨機(jī)數(shù)

FLOOR:向下整數(shù) (FlOOR(1.2)=1)

CEILING 向上取整 (CEILING(1.2)=2)

substring:截取字符串

concat:字符串連接

CREATE DEFINER=`root`@`localhost` FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1BEGINDECLARE chars_str varchar(100) DEFAULT ’ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz’; 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()*62 ),1)); SET i = i +1; END WHILE; RETURN return_str;END

查看自定義的所有函數(shù)

show function status

測(cè)試使用:

select rand_string(5);

生成隨機(jī)年月日字符串

生成一個(gè)指定時(shí)間段內(nèi)的隨機(jī)日期

SELECTdate(from_unixtime( unix_timestamp( ’2000-01-01’ ) + floor( rand() * ( unix_timestamp( ’2020-12-31’ ) - unix_timestamp( ’2000-01-01’ ) + 1 ) ) ));

函數(shù):生成指定時(shí)間段內(nèi)的隨機(jī)日期

CREATE DEFINER=`root`@`localhost` FUNCTION `rand_date_string`(startDate varchar(255),endDate varchar(255)) RETURNS varchar(255) CHARSET latin1BEGIN DECLARE return_str varchar(255) DEFAULT ’’; SET return_str =date(from_unixtime( unix_timestamp( startDate ) + floor( rand() * ( unix_timestamp( endDate ) - unix_timestamp( startDate ) + 1 ) ) ) ); RETURN return_str;END

測(cè)試使用:

select rand_date_string(’2000-01-01’,’2020-12-31’);//結(jié)果2001-09-10

存儲(chǔ)過程生成數(shù)據(jù)

給每個(gè)部門插入一百萬員工,那么員工表就有九百萬的數(shù)據(jù)。

CREATE DEFINER=`root`@`localhost` PROCEDURE `data`()BEGINDECLARE i INT DEFAULT 1;DECLARE j INT DEFAULT 0;DECLARE id INT DEFAULT 0;WHILE i < 10 DOWHILE j < 1000000 DOinsert into employees_m (emp_no,birth_date,first_name,last_name,gender,hire_date) VALUES(id,rand_date_string(’1970-01-01’,’1997-01-01’),rand_string(5),rand_string(5),’M’,NOW());insert into dept_emp_m (emp_no,dept_no,from_date,to_date) values( id,concat(’d00’,i),rand_date_string(’1990-01-01’,’2020-12-31’),’2020-12-31’); SET j=j+1; SET id=id+1; END WHILE;SET j = 0;SET i=i+1; END WHILE;END

插入九百萬條數(shù)據(jù)大概用時(shí):4868s

上面的方式插入數(shù)據(jù)會(huì)很慢,可以將數(shù)據(jù)插入到內(nèi)存表,就是將表的存儲(chǔ)引擎修改為MEMORY這樣就會(huì)使用內(nèi)存去存儲(chǔ)數(shù)據(jù),會(huì)比直接插入到INNODB引擎的表中快很多,只不過就是沒有持久化,但是速度賊快,插入一千萬條數(shù)據(jù)大概需要時(shí)間: 1227.89s

附錄

修改表存儲(chǔ)引擎

ALTER TABLE dept_emp_m ENGINE=MEMORY;

調(diào)整內(nèi)存表的大小,修改配置文件

[mysqld]max_heap_table_size = 2048Mtmp_table_size = 2048M

以上就是MySQL制作具有千萬條測(cè)試數(shù)據(jù)的測(cè)試庫的方法的詳細(xì)內(nèi)容,更多關(guān)于MySQL 千萬條測(cè)試數(shù)據(jù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 国产女主播喷水视频在线观看 | 激情狠狠 | 欧美 亚洲 | 亚洲欧美一区二区三区久久 | 99视频精品全部免费看 | 一区二区国产精品视频 | 精品国产99久久久久久宅男i | 大伊人久久 | 久久午夜剧场 | 久久六六 | 中文字幕av播放 | 天堂av中文字幕 | 中文字幕永久在线视频 | 青青操网 | 456亚洲视频 | 91社在线 | 91高清免费| 成人在线视频一区 | 日韩中文在线观看 | aaa成人| 69精品久久久久久 | 视频大全在线观看网址 | 国产精品乱码久久久 | 国产精品av一区 | 久久视频免费看 | 精品免费在线 | 婷婷天堂| 五十路中文字幕 | 天天干天天拍 | 成人免费超碰 | 性涩av | 国产手机视频在线观看 | 久久综合久| 亚洲青草 | 久久久久亚洲精品 | 国内毛片毛片毛片 | 日韩精品综合 | 欧美 日韩 中文字幕 | 香蕉视频911| 国产午夜精品一区二区三区嫩草 | 精品1卡二卡三卡四卡老狼 亚洲网在线观看 |