当前位置:Gxlcms > 数据库问题 > mysql生成千万级的测试数据

mysql生成千万级的测试数据

时间:2021-07-01 10:21:17 帮助过:23人阅读

 
  1. CREATE TABLE `card` (  
  2.    `card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID‘,  
  3.    `card_number` varchar(100) DEFAULT NULL COMMENT ‘卡号‘,  
  4.    PRIMARY KEY (`card_id`)  
  5.  ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC  

 

2.创建MYSQL存储过程

[sql] view plain copy  
  1. DROP PROCEDURE IF EXISTS proc1;  
  2. DELIMITER $$  
  3. SET AUTOCOMMIT = 0$$  
  4. CREATE  PROCEDURE proc1()  
  5. BEGIN  
  6. DECLARE v_cnt DECIMAL (10)  DEFAULT 0 ;  
  7. dd:LOOP  
  8.           INSERT  INTO card (card_number) VALUES (UUID());  
  9.                   COMMIT;  
  10.                     SET v_cnt = v_cnt+1 ;  
  11.                            IF  v_cnt = 10000000 THEN LEAVE dd;  
  12.                           END IF;  
  13.          END LOOP dd ;  
  14. END;$$  
  15. DELIMITER ;  

 

3.调用存储过程,生成对应的测试数据

[sql] view plain copy  
  1. call proc1;  

 我的机子大概是2分13秒的样子生成完毕,每个人的机子各有不同,生成的时间也会不一样。

 

4.来测试一下性能吧。

[sql] view plain copy  
  1. select * from card order by rand() limit 1;   //6.5秒查询完毕  
  2. select * from card where card_number like ‘%xxx%‘; //3.7秒查询完毕  

在这样的海量数据情况下,如果用到模糊查询,那肯定会很慢,一般建议用全文检索引擎来替代(如Sphinx),查询速度就完全解决。

mysql生成千万级的测试数据

标签:xxx   sel   uuid   def   rem   set   tle   select   com   

人气教程排行