MYSQL-创建测试数据

引用自https://www.cnblogs.com/qmfsun/p/4881919.html

在mysql数据库中制作千万级测试表
 
前言:
最近准备深入的学一下mysql,包括各种引擎的特性、性能优化、分表分库等。为了方便测试性能、分表等工作,就需要先建立一张比较大的数据表。我这里准备先建一张千万记录用户表。
 
步骤:
1  创建数据表(MYISAM方式存储插入速度比innodb方式快很多)
  
数据表描述
 
数据量: 1 千万
 
字段类型:
id :编号
uname:用户名
ucreatetime: 创建时间
age:年龄
 
CREATE TABLE usertb(   
id serial,    
uname  varchar( 20 ) ,   
ucreatetime  datetime  ,   
age   int ( 11 ))   
ENGINE=MYISAM 
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci   
AUTO_INCREMENT= 1   
ROW_FORMAT=COMPACT;    
 
2  创建插入数据存储过程 
 
delimiter $$ 
SET AUTOCOMMIT =  0 $$   
 
create  procedure test1()  
begin
declare v_cnt decimal ( 10 )   default  0 
dd:loop            
         insert  into usertb values         
         ( null , '用户1' , '2010-01-01 00:00:00' , 20 ),         
         ( null , '用户2' , '2010-01-01 00:00:00' , 20 ),         
         ( null , '用户3' , '2010-01-01 00:00:00' , 20 ),         
         ( null , '用户4' , '2010-01-01 00:00:00' , 20 ),         
         ( null , '用户5' , '2011-01-01 00:00:00' , 20 ),         
         ( null , '用户6' , '2011-01-01 00:00:00' , 20 ),         
         ( null , '用户7' , '2011-01-01 00:00:00' , 20 ),         
         ( null , '用户8' , '2012-01-01 00:00:00' , 20 ),         
         ( null , '用户9' , '2012-01-01 00:00:00' , 20 ),         
         ( null , '用户0' , '2012-01-01 00:00:00' , 20 )             
                 ;                   
         commit;                     
         set v_cnt = v_cnt+ 10  ;                            
             if   v_cnt =  10000000  then leave dd;                           
             end  if ;          
         end loop dd ; 
end;$$   
 
delimiter ;    
 
3  执行存储过程
 
call test1;    
 
耗时:用i5的笔记本执行也只需要 95 秒的时间
 
4  根据需要修改engineer (非必要步骤,如果不需要转换无需操作)
 
alter table usertb engine=innodb;    
耗时:用i5的笔记本执行也只需要 200 秒的时间

猜你喜欢

转载自www.cnblogs.com/AYxing/p/9623515.html
今日推荐