码迷,mamicode.com
首页 > 数据库 > 详细

mysql生成千万级的测试数据

时间:2018-01-23 22:11:10      阅读:273      评论:0      收藏:0      [点我收藏+]

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

http://blog.csdn.net/dennis211/article/details/78076399

MYSQL打造千万级测试数据

为了更好的测试MYSQL性能以及程序优化,不得不去制作海量数据来测试。我这里的方法就是直接用uuid函数进行分配每条数据的不同内容。

 

1.首先创建测试表(card表)

[sql] view plain copy
 
  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   

原文地址:https://www.cnblogs.com/Simeonwu/p/8337814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!