MYSQL打造千万级测试数据

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

 

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

Sql代码   收藏代码
  1. CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;  
  2. DROP TABLE IF EXISTS `card`;  
  3. CREATE TABLE `card` (  
  4.    `card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',  
  5.    `card_number` varchar(100) DEFAULT NULL COMMENT '卡号',  
  6.    PRIMARY KEY (`card_id`)  
  7.  ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC  

 

2.创建MYSQL存储过程

Sql代码   收藏代码
  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代码   收藏代码
  1. call proc1;  

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

 

4.来测试一下性能吧。

Sql代码   收藏代码
  1. select * from card order by rand() limit 1;   //6.5秒查询完毕  
  2. select * from card where card_number like '%xxx%'; //3.7秒查询完毕  

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

原文出处http://wangking717.iteye.com/blog/2291253

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值