亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

MySQL制作具有千萬條測試數據的測試庫的方法

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

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

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

導入官方的數據庫,做了一些簡化,留下了部門表,員工表和雇傭表三張表,去掉了外鍵關聯(lián)。因為是測試數據,日期的對應關系不具備準確性。

必要的函數

生成隨機字符串

RAND():生成0~1之間的隨機數

FLOOR:向下整數 (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

查看自定義的所有函數

show function status

測試使用:

select rand_string(5);

生成隨機年月日字符串

生成一個指定時間段內的隨機日期

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

函數:生成指定時間段內的隨機日期

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

測試使用:

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

存儲過程生成數據

給每個部門插入一百萬員工,那么員工表就有九百萬的數據。

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

插入九百萬條數據大概用時:4868s

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

附錄

修改表存儲引擎

ALTER TABLE dept_emp_m ENGINE=MEMORY;

調整內存表的大小,修改配置文件

[mysqld]max_heap_table_size = 2048Mtmp_table_size = 2048M

以上就是MySQL制作具有千萬條測試數據的測試庫的方法的詳細內容,更多關于MySQL 千萬條測試數據的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 欧美国产亚洲一区二区三区 | 成人在线网 | 亚洲色图综合在线 | 欧美三区在线观看 | 大色综合 | 国产91长腿美女在线观看 | 欧美黄色免费网站 | 色婷婷综合和线在线 | 亚欧日韩毛片在线看免费网站 | 亚洲色大成网站www久久九九 | 草草影院欧美 | 在线视频欧美亚洲 | 欧美人妖猛交 | 色欲影院 | 国产精品久久免费 | 欧美一级毛片黄 | 欧美一二三区视频 | 538porm在线看国产亚洲 | 特级aa一级欧美毛片 | 最新国产美女一区二区三区 | 国产特级黄色片 | 色偷偷女男人的天堂亚洲网 | 毛片免费软件 | 韩国一级黄色录像 | 国产成人91高清精品免费 | 免费在线观看中文字幕 | 99久久免费中文字幕精品 | 伊人久久在线视频 | 久久国产乱子伦精品免费强 | 欧美一区二区在线视频 | 成人精品免费视频 | 日本成人一区二区 | 成人国产精品一级毛片天堂 | 国产视频 每日更新 | 亚洲精品午夜aaa级久久久久 | 亚洲精品综合一区在线 | 亚洲精品国产美女在线观看 | 国产一区二区不卡视频 | 国产成人一区二区三区视频免费蜜 | 1024视频在线| 免费的一极毛片在线播放 |