中间件同步程序的压测(存储过程的应用)

 

拆库版本--验收这边,需要提供清晰的需求文档(之前只是一个数据流走向图),果然产品再次梳理时,发现了一些隐藏问题。

中间件同步程序的测试:

考虑方向:down掉或者延时发生,需要有容错机制,比如熔断、降级等。同时要考虑好数据的托底展示,比如本机缓存,remote缓存。

拆库版本的数据库一致验证:在老数据测试阶段,比对了两边数据库中,相关表的记录数是否相同,(比较笨的方法)

 

下面是对中间库同步程序down后重启的压测场景:

  • #1、 暂停中间库同步服务,往TB库插入数据 190……#

SELECT * from users_front ORDER BY  id  DESC LIMIT 1;     


#DELIMITER #
CREATE PROCEDURE test_usersfront8163()
BEGIN        
    declare  temp int default 120000;          #temp被赋值为12万次#   
    declare  i_id int default  替换;     #id 主键  不需要+1#   
    declare  str_username varchar(20);            #用户名
    declare  str_mobile varchar(20) default '19000450001';          #手机号

    while temp>0 DO                                         
        SET i_id=i_id+1;                
        SET str_mobile=str_mobile-1;  
        SET str_username=str_mobile;
        INSERT INTO users_front(id,username,password,mobile,status,vip_flag,regist_type) VALUES(i_id,str_username,'d6767b23d81f1cc9fa0f844822360290',str_mobile,'1','0','1');
        SET temp=temp-1;
    END WHILE;  
END


CALL test_usersfront8163();

  • #2、暂停中间库,往TB库导入学生数据  160……  共7547条#

 

  • #3、暂停中间库,往APP库插入数据 点播的观看记录#

SELECT * from user_history ORDER BY  id  DESC LIMIT 1;  #查询user_history表中id的最大值  #   

SELECT * from user_history_all ORDER BY  id  DESC LIMIT 1;  #查询user_history表中id的最大值   #   

CREATE PROCEDURE test_userhistory816()
BEGIN        
    declare  temp int default 330001;          #temp被赋值为33万次 330001#   
        #declare  i_id3 int default  替换;     #id 主键  需要+1#   
        declare  i_id4 int default  替换;  
    while temp>0 DO                                         
        #INSERT INTO  user_history VALUES(i_id3,5,1265,1265,1453,'2017-08-26 14:43:20',3,10,0);
        INSERT INTO  user_history_all VALUES(i_id4,5,1265,1265,1453,'2017-08-26 14:43:20',10,0);
        #SET i_id3=i_id3+1;
        SET i_id4=i_id4+1;
        SET temp=temp-1;
    END WHILE;  
END

CALL test_userhistory8162();

  • #4、在APP数据库修改APP认证用户信息#

SELECT * FROM student  WHERE is_in_school=1  LIMIT 15000;
UPDATE student SET birthday = '1999-08-01'  WHERE is_in_school=1  LIMIT  15000;

  • #5、在app数据库插入用户数据 190……,与TB端产生冲突#

SELECT * from users_front ORDER BY  id  DESC LIMIT 1;  #查询表中id的最大值  #   

#DELIMITER #
CREATE PROCEDURE test_usersfront_app8163()
BEGIN        
    declare  temp int default 20;          #temp被赋值为20次#   
        declare  i_id int default  替换;     #id 主键  不需要+1#   
        declare  str_username varchar(20);            #用户名        
        declare  str_mobile varchar(20) default '19000450001';          #手机号        

    while temp>0 DO                                         
        SET i_id=i_id+1;                
        SET str_mobile=str_mobile-1;  
        SET str_username=str_mobile;
        INSERT INTO users_front(id,username,password,mobile,status,vip_flag,regist_type) VALUES(i_id,str_username,'d6767b23d81f1cc9fa0f844822360290',str_mobile,'1','0','4');
        SET temp=temp-1;
    END WHILE;  
END

CALL test_usersfront_app8163();


posted @ 2018-08-20 12:04  幸福在今天  阅读(149)  评论(0)    收藏  举报