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

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

 更新時(shí)間:2020年11月30日 09:06:54   作者:lichlaughing  
這篇文章主要介紹了MySQL制作具有千萬(wàn)條測(cè)試數(shù)據(jù)的測(cè)試庫(kù)的方法,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下

有時(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)化,留下了部門表,員工表和雇傭表三張表,去掉了外鍵關(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è)部門插入一百萬(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ān)文章

  • Mysql最新版本的數(shù)據(jù)庫(kù)安裝教程(5.7)

    Mysql最新版本的數(shù)據(jù)庫(kù)安裝教程(5.7)

    這篇文章主要為大家詳細(xì)介紹了Mysql最新版本的數(shù)據(jù)庫(kù)安裝教程,分享了Mysql 5.7安裝配置方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • MySQL實(shí)現(xiàn)模糊查詢的高效方法總結(jié)(附30條優(yōu)化建議)

    MySQL實(shí)現(xiàn)模糊查詢的高效方法總結(jié)(附30條優(yōu)化建議)

    數(shù)據(jù)庫(kù)SQL優(yōu)化是老生常談的問(wèn)題,在面對(duì)模糊查詢的時(shí)候又有什么好的優(yōu)化建議呢?這篇文章主要給大家介紹了關(guān)于MySQL實(shí)現(xiàn)模糊查詢的高效方法,文中還附30條優(yōu)化建議,需要的朋友可以參考下
    2024-03-03
  • MySQL InnoDB中的鎖機(jī)制深入講解

    MySQL InnoDB中的鎖機(jī)制深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL InnoDB中鎖機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • MySQL更新存放JSON的字段、\“ 轉(zhuǎn)義成 “的問(wèn)題描述

    MySQL更新存放JSON的字段、\“ 轉(zhuǎn)義成 “的問(wèn)題描述

    本篇介紹在執(zhí)行MySQL線上變更時(shí)遇到的問(wèn)題,表現(xiàn)為"更新JSON字段時(shí),實(shí)際更新的值與SQL語(yǔ)句中的值不一致,JSON格式錯(cuò)誤",本文給大家分享問(wèn)題描述及解決方案,感興趣的朋友一起看看吧
    2022-12-12
  • MLSQL編譯時(shí)權(quán)限控制示例詳解

    MLSQL編譯時(shí)權(quán)限控制示例詳解

    這篇文章主要給大家介紹了關(guān)于MLSQL編譯時(shí)權(quán)限控制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))

    MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))

    查重是我們?cè)诠ぷ髦薪?jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • mysql實(shí)現(xiàn)將date字段默認(rèn)值設(shè)置為CURRENT_DATE

    mysql實(shí)現(xiàn)將date字段默認(rèn)值設(shè)置為CURRENT_DATE

    這篇文章主要介紹了mysql實(shí)現(xiàn)將date字段默認(rèn)值設(shè)置為CURRENT_DATE問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mysql my.cnf配置文件參數(shù)詳解

    Mysql my.cnf配置文件參數(shù)詳解

    Linux 操作系統(tǒng)中 MySQL 的配置文件是 my.cnf,一般會(huì)放在 /etc/my.cnf 或 /etc/mysql/my.cnf 目錄下,這篇文章主要介紹了Mysql my.cnf配置文件參數(shù)詳解,需要的朋友可以參考下
    2023-11-11
  • MySQL算術(shù)/比較/邏輯/位/運(yùn)算符與正則舉例詳解

    MySQL算術(shù)/比較/邏輯/位/運(yùn)算符與正則舉例詳解

    每種數(shù)據(jù)庫(kù)都支持SQL語(yǔ)句,但是它們也都有各自支持的運(yùn)算符,下面這篇文章主要給大家介紹了關(guān)于MySQL算術(shù)/比較/邏輯/位/運(yùn)算符與正則的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 淺談如何保證Mysql主從一致

    淺談如何保證Mysql主從一致

    這篇文章主要介紹了淺談如何保證Mysql主從一致
    2022-03-03

最新評(píng)論

陈巴尔虎旗| 浦北县| 同德县| 镇康县| 永修县| 平顶山市| 宝鸡市| 龙陵县| 蒲江县| 钟山县| 大余县| 河东区| 从江县| 星子县| 马公市| 道真| 保定市| 双桥区| 梅河口市| 新巴尔虎右旗| 武冈市| 罗江县| 呼和浩特市| 玉田县| 信宜市| 虞城县| 辉南县| 古浪县| 双牌县| 松原市| 江陵县| 阳高县| 上蔡县| 商南县| 阿荣旗| 沛县| 利川市| 宁晋县| 五河县| 威海市| 库车县|