亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

必要的函數(shù)

生成隨機字符串

RAND():生成0~1之間的隨機數(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

測試使用:

select rand_string(5);

生成隨機年月日字符串

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

SELECT
	date(
	from_unixtime( unix_timestamp( '2000-01-01' ) + floor( rand() * ( unix_timestamp( '2020-12-31' ) - unix_timestamp( '2000-01-01' ) + 1 ) ) ));

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

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

測試使用:

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

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

給每個部門插入一百萬員工,那么員工表就有九百萬的數(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

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

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

附錄

修改表存儲引擎

ALTER TABLE dept_emp_m ENGINE=MEMORY;

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

[mysqld]
max_heap_table_size = 2048M
tmp_table_size = 2048M

以上就是MySQL制作具有千萬條測試數(shù)據(jù)的測試庫的方法的詳細內容,更多關于MySQL 千萬條測試數(shù)據(jù)的資料請關注腳本之家其它相關文章!

相關文章

  • mysql 修改密碼和設置允許遠程登錄

    mysql 修改密碼和設置允許遠程登錄

    這篇文章主要介紹了mysql 修改密碼和設置允許遠程登錄的相關資料,需要的朋友可以參考下
    2015-07-07
  • MySQL OOM 系統(tǒng)二 OOM Killer

    MySQL OOM 系統(tǒng)二 OOM Killer

    前面一節(jié)重點分享了Linux的內存分配策略,基于上述的分配策略,為了規(guī)避超售的風險,Linux采了一種OOM Killer的機制,即系統(tǒng)可用內存(包括Swap)即將使用完之前,選擇性的Kill掉一些進程以求釋放一些內存
    2016-07-07
  • MySQL之MHA高可用配置及故障切換實現(xiàn)詳細部署步驟

    MySQL之MHA高可用配置及故障切換實現(xiàn)詳細部署步驟

    這篇文章主要介紹了MySQL之MHA高可用配置及故障切換實現(xiàn)詳細部署步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • MySQL查詢排序與查詢聚合函數(shù)用法分析

    MySQL查詢排序與查詢聚合函數(shù)用法分析

    這篇文章主要介紹了MySQL查詢排序與查詢聚合函數(shù)用法,結合實例形式分析了MySQL查詢結果排序以及查詢聚合函數(shù)相關使用技巧,需要的朋友可以參考下
    2019-11-11
  • 淺談一下MyISAM和InnoDB存儲引擎的區(qū)別

    淺談一下MyISAM和InnoDB存儲引擎的區(qū)別

    這篇文章主要介紹了MyISAM和InnoDB存儲引擎的區(qū)別,存儲引擎是MySQL中特有的一個術語,其它數(shù)據(jù)庫中沒有,實際上存儲引擎是一個表存儲/組織數(shù)據(jù)的方式,今天就跟小編來看看MyISAM和InnoDB存儲引擎的區(qū)別,需要的朋友可以參考下
    2023-04-04
  • 企業(yè)生產MySQL優(yōu)化介紹

    企業(yè)生產MySQL優(yōu)化介紹

    這篇文章主要介紹了企業(yè)生產MySQL優(yōu)化介紹的相關內容,文中敘述了其優(yōu)化內容,各個方面介紹的比較詳細,需要的朋友可以參考。
    2017-10-10
  • 關于MySQL日期類型的選擇建議

    關于MySQL日期類型的選擇建議

    在軟件開發(fā)中,時間記錄是不可或缺的功能,如記錄操作時間、交易時間等,通常不建議使用字符串存儲日期,因為它占用空間大,并且效率低下,MySQL提供的Datetime和Timestamp是常用的時間存儲類型,Datetime沒有時區(qū)信息,而Timestamp與時區(qū)有關
    2024-10-10
  • Linux下mysql5.6.24(二進制)自動安裝腳本

    Linux下mysql5.6.24(二進制)自動安裝腳本

    這篇文章主要為大家詳細介紹了Linux環(huán)境下mysql5.6.24二進制自動安裝腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 一文詳解MySQL主從同步原理

    一文詳解MySQL主從同步原理

    這篇文章主要介紹了一文詳解MySQL主從同步原理,MySQL主從同步是基于Bin?Log實現(xiàn)的,而Bin?Log記錄的是原始SQL語句,更多相關內容介紹感興趣的小伙伴可以參考一下
    2022-08-08
  • MYSQL 數(shù)據(jù)庫導入導出命令

    MYSQL 數(shù)據(jù)庫導入導出命令

    在不同操作系統(tǒng)或MySQL版本情況下,直接拷貝文件的方法可能會有不兼容的情況發(fā)生。所以一般推薦用SQL腳本形式導入。下面分別介紹兩種方法。
    2010-11-11

最新評論