Mysql5.7 使用存儲過程 分段生成 億級 測試數據

 

1、建表

DROP TABLE IF EXISTS `t_big_table`;
CREATE TABLE `t_big_table` (
  `id` bigint(20) NOT NULL,
  `code` varchar(255) DEFAULT NULL,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='大數據表(用於測試sql查詢語句調優)';

 

2、建存儲過程

DROP PROCEDURE IF EXISTS gen_big_data;
DELIMITER $$
SET AUTOCOMMIT = 0$$
CREATE  PROCEDURE gen_big_data(
IN min_num INTEGER,
IN max_num INTEGER
)
BEGIN
DECLARE n DECIMAL (10)  DEFAULT min_num ;
dd:LOOP
      INSERT  INTO t_big_table(id,code,username,password) VALUES (n,UUID(),concat('user-',n),password(n));
			COMMIT;
			SET n = n+1 ;
			IF  n = max_num  THEN LEAVE dd;
			END IF;
END LOOP dd ;
END;$$
DELIMITER ;

 

3、調用存儲過程,生成測試數據:

  例如生成5百萬數據 ,可根據區間,分5次執行,以減少生成數據的時間

call gen_big_data(1,1000000);

call gen_big_data(1000000,2000000);

call gen_big_data(2000000,3000000);

call gen_big_data(3000000,4000000);

call gen_big_data(4000000,5000000);

執行耗時截圖(筆記本配置較低,執行時間較長):

 

4、統計數據:

 

一條count語句,速度這麼慢,貌似說不過去,於是給id字段建了個唯一索引(由於id字段是主鍵,擁有主鍵索引,但數據量大時,查詢還是很慢,此處的操作是在主鍵索引上建立唯一索引,即在索引上建索引):

 

 

1千萬的數據,導出成sql格式的,共1.37G大小,壓縮下,就279多M了,

t_big_table(含數據).7z  百度網盤鏈接,以備後用,需要的朋友們,可以直接下:

鏈接:https://pan.baidu.com/s/1wGkXiEhSHH_XUJR-x96pcg 
提取碼:qrnp

 

參考文檔:

Mysql 生成億級測試數據 https://blog.csdn.net/qq_36431213/article/details/81304645

MySQL存儲過程(帶輸入參數)實例 https://www.cnblogs.com/halo-halo/p/9026078.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章