五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2022-02-23 10:41 | 文章來(lái)源:CSDN

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

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

導(dǎo)入官方的數(shù)據(jù)庫(kù),做了一些簡(jiǎn)化,留下了部門(mén)表,員工表和雇傭表三張表,去掉了外鍵關(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 latin1
BEGIN
	DECLARE 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ī)日期

SELECT
	date(
	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 latin1
BEGIN
  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ǔ)過(guò)程生成數(shù)據(jù)

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

CREATE DEFINER=`root`@`localhost` PROCEDURE `data`()
BEGIN
	
	DECLARE i INT DEFAULT 1;
	DECLARE j INT DEFAULT 0;
	DECLARE id INT DEFAULT 0;
	WHILE i < 10 DO
			WHILE j < 1000000 DO
				insert 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

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

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

附錄

修改表存儲(chǔ)引擎

ALTER TABLE dept_emp_m ENGINE=MEMORY;

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

[mysqld]
max_heap_table_size = 2048M
tmp_table_size = 2048M

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

美國(guó)服務(wù)器租用

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部