mysql生成千万级的测试数据

Posted simeonwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql生成千万级的测试数据相关的知识,希望对你有一定的参考价值。

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生成千万级的测试数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql快速插入百万级测试数据,最好的方式是啥?

快速生成百万级的概率数据的N种实践方法

.Net Core导入千万级数据至Mysql

MySQL 百万级/千万级表 全量更新

测试工具

mysql 百万级的表怎么处理