PC2 1.2.0性能测试 - Mysql造数据

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
在Mysql中造数据的时候, 需要写大量的存储过程来完成。 

一、为表PERSON_PERMISSION造数据:

1、数据来自于accout表中的400万数据
2、person_permission表中的数据, 其中vaccount_id为account表中的member_id, 且将每个member_id对应10个vaccount_id,其中0~4的前5个的status为‘ENABLED’状态,5~9的后5个的status为‘DISABLED’状态; 在每5个的前4个的GRANDTED_TYPE为‘ENTERPRISE’,后1个为‘PERSON’; ACL字段始终为1,PERMISSION_ID为21、PERMISSION_TYPE为‘PACKAGE’,GMT_CREATED、 GMT_MODIFIED的时间均为当前时间。

解决方案:

DELIMITER $$
DROP  PROCEDURE  IF  EXISTS `PERSON_PERMISSION_SUBSCRIPTION` $$
CREATE  PROCEDURE `PERSON_PERMISSION_SUBSCRIPTION`()
BEGIN

   DECLARE iloop  SMALLINT  DEFAULT 0;
   DECLARE iNum MEDIUMINT  DEFAULT 0;
   DECLARE iMod MEDIUMINT  DEFAULT 0;
    
   DECLARE strMemberID  VARCHAR(40)  DEFAULT 0;
   DECLARE Cur_account  CURSOR  FOR  SELECT member_id  FROM account;
  
   OPEN Cur_account;
   FETCH Cur_account  INTO strMemberID;
  
   WHILE iNum<4001 DO
    START  TRANSACTION;
     WHILE iloop<=1000 DO
       SET iMod=0;
       WHILE iMod < 10    DO
      
         IF iMod < 4  THEN
           INSERT  INTO PERSON_PERMISSION(person_id,vaccount_id, acl, permission_id, permission_type, gmt_create, gmt_modified, STATUS, granted_type)
             VALUES(CONCAT(strMemberID,  '_P', iMod),strMemberID,1,21, 'PACKAGE',NOW(), NOW(), 'ENABLED', 'ENTERPRISE');
          
        ELSEIF iMod = 4  THEN      
             INSERT  INTO PERSON_PERMISSION(person_id,vaccount_id, acl, permission_id, permission_type, gmt_create, gmt_modified, STATUS, granted_type)
             VALUES(CONCAT(strMemberID,  '_P', iMod),strMemberID,1,21, 'PACKAGE',NOW(), NOW(), 'ENABLED', 'PERSON');  
          
        ELSEIF iMod <    9  THEN  
             INSERT  INTO PERSON_PERMISSION(person_id,vaccount_id, acl, permission_id, permission_type, gmt_create, gmt_modified, STATUS, granted_type)
             VALUES(CONCAT(strMemberID,  '_P', iMod),strMemberID,1,21, 'PACKAGE',NOW(), NOW(), 'DISABLED', 'ENTERPRISE');  
          
         ELSE
             INSERT  INTO PERSON_PERMISSION(person_id,vaccount_id, acl, permission_id, permission_type, gmt_create, gmt_modified, STATUS, granted_type)
             VALUES(CONCAT(strMemberID,  '_P', iMod),strMemberID,1,21, 'PACKAGE',NOW(), NOW(), 'DISABLED', 'PERSON');    
         END  IF;
        
         SET iMod=iMod+1;        
       END  WHILE;
    
       FETCH Cur_account  INTO strMemberID;
       SET iloop=iloop+1;
     END  WHILE;
    
     COMMIT;
     SET iloop=0;
     SET iNum=iNum+1;
   END  WHILE;
   CLOSE Cur_account;
END $$
DELIMITER ;

CALL `PERSON_PERMISSION_SUBSCRIPTION`();

进一步要求:把person_id以‘_P0'结尾的数据person_id更新为‘*’

DELIMITER $$
DROP  PROCEDURE  IF  EXISTS `PERSON_PERMISSION_UP` $$
CREATE  PROCEDURE `PERSON_PERMISSION_UP`()
BEGIN

   DECLARE iNum MEDIUMINT  DEFAULT 0;
   DECLARE iLoop MEDIUMINT  DEFAULT 0;
  
     WHILE iNum<40010000 DO
      START  TRANSACTION;  
      
         UPDATE person_permission  SET person_id= '*'     WHERE person_id  LIKE  '%_P0'  AND id > iNum  ANDid < iNum + 10000;
        
       COMMIT;
       SET iNum=iNum+10000;
     END  WHILE;

END $$
DELIMITER ;

CALL `PERSON_PERMISSION_UP`();

二、为表vaccount_parameter1200万数据:

需求:
parameter_id:1, 11, 21
Vaccount_Id:从account表中的400万中取数据
realvalue:80
assign value:null
gtm_create: now()
gmt_modified:now()
status:'ENABLED'

解决方案:
DELIMITER $$
DROP  PROCEDURE  IF  EXISTS `VACCOUNT_PARAMETER_PROC` $$
CREATE  PROCEDURE `VACCOUNT_PARAMETER_PROC`()
BEGIN

   DECLARE iloop  SMALLINT  DEFAULT 0;
   DECLARE iNum MEDIUMINT  DEFAULT 0;
    
   DECLARE strMemberID  VARCHAR(40)  DEFAULT 0;
   DECLARE Cur_account  CURSOR  FOR  SELECT member_id  FROM account;
  
   OPEN Cur_account;
   FETCH Cur_account  INTO strMemberID;
  
   WHILE iNum<=4000 DO
    START  TRANSACTION;
    
       WHILE iloop<=1000 DO
  
         INSERT  INTO vaccount_parameter(parameter_id,vaccount_id, real_value, gmt_create, gmt_modified, STATUS )    
              VALUES(1,strMemberID, '80',NOW(), NOW(), 'ENABLED');
        
         INSERT  INTO vaccount_parameter(parameter_id,vaccount_id, real_value, gmt_create, gmt_modified, STATUS )    
              VALUES(11,strMemberID, '80',NOW(), NOW(), 'ENABLED');
             
         INSERT  INTO vaccount_parameter(parameter_id,vaccount_id, real_value, gmt_create, gmt_modified, STATUS )    
              VALUES(21,strMemberID, '80',NOW(), NOW(), 'ENABLED');
  
         FETCH Cur_account  INTO strMemberID;
         SET iloop=iloop+1;
       END  WHILE;
    
     COMMIT;
     SET iloop=0;
     SET iNum=iNum+1;
   END  WHILE;
   CLOSE Cur_account;
END $$
DELIMITER ;

CALL `VACCOUNT_PARAMETER_PROC`();



三、为表Person_parameter2400万数据:

需求:
parameter_id:1, 11, 21
person_id: 分为2种, 一种为‘*’, 另一种为从 account表中的400万中取数据
Vaccount_Id:从account表中的400万中取数据
realvalue:10
gtm_create: now()
gmt_modified:now()
status:'ENABLED'
granted_type:‘ENTERPRISE’

解决方案:
TRUNCATE  TABLE person_parameter;

DELIMITER $$
DROP  PROCEDURE  IF  EXISTS `PERSON_PARAMETER_PROC` $$
CREATE  PROCEDURE `PERSON_PARAMETER_PROC`()
BEGIN

   DECLARE iloop  SMALLINT  DEFAULT 0;
   DECLARE iNum MEDIUMINT  DEFAULT 0;
   DECLARE iMod MEDIUMINT  DEFAULT 0;#此参数未用到,可以去掉
    
   DECLARE strMemberID  VARCHAR(40)  DEFAULT 0;
   DECLARE Cur_account  CURSOR  FOR  SELECT member_id  FROM account;
  
   OPEN Cur_account;
   FETCH Cur_account  INTO strMemberID;
  
   WHILE iNum<=4000 DO
    START  TRANSACTION;
       WHILE iloop<=1000 DO
  
           INSERT  INTO person_parameter(parameter_id, person_id, vaccount_id, real_value, gmt_create, gmt_modified, STATUS, granted_type) 
               VALUES(1, '*',strMemberID,  '10', NOW(), NOW(),  'ENABLED', 'ENTERPRISE');
        
           INSERT  INTO person_parameter(parameter_id, person_id, vaccount_id, real_value, gmt_create, gmt_modified, STATUS, granted_type) 
               VALUES(11, '*',strMemberID,  '10', NOW(), NOW(),  'ENABLED', 'ENTERPRISE');
        
        
           INSERT  INTO person_parameter(parameter_id, person_id, vaccount_id, real_value, gmt_create, gmt_modified, STATUS, granted_type) 
               VALUES(21, '*',strMemberID,  '10', NOW(), NOW(),  'ENABLED', 'ENTERPRISE');
        
        
           INSERT  INTO person_parameter(parameter_id, person_id, vaccount_id, real_value, gmt_create, gmt_modified, STATUS, granted_type) 
               VALUES(1,strMemberID,strMemberID,  '10', NOW(), NOW(),  'ENABLED', 'ENTERPRISE');
        
           INSERT  INTO person_parameter(parameter_id, person_id, vaccount_id, real_value, gmt_create, gmt_modified, STATUS, granted_type) 
               VALUES(11,strMemberID,strMemberID,  '10', NOW(), NOW(),  'ENABLED', 'ENTERPRISE');
        
        
           INSERT  INTO person_parameter(parameter_id, person_id, vaccount_id, real_value, gmt_create, gmt_modified, STATUS, granted_type) 
               VALUES(21,strMemberID,strMemberID,  '10', NOW(), NOW(),  'ENABLED', 'ENTERPRISE');
        
             FETCH Cur_account  INTO strMemberID;
           SET iloop=iloop+1;
       END  WHILE;
    
     COMMIT;
     SET iloop=0;
     SET iNum=iNum+1;
   END  WHILE;
   CLOSE Cur_account;
END $$
DELIMITER ;

CALL `PERSON_PARAMETER_PROC`();

本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/353910,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15小时前
|
SQL 关系型数据库 MySQL
这篇文章带你了解:如何一次性将Centos中Mysql的数据快速导出!!!
这篇文章带你了解:如何一次性将Centos中Mysql的数据快速导出!!!
|
22小时前
|
存储 SQL 关系型数据库
MySQL的优化利器⭐️索引条件下推,千万数据下性能提升273%🚀
以小白的视角探究MySQL索引条件下推ICP的优化,其中包括server层与存储引擎层如何交互、索引、回表、ICP等内容
MySQL的优化利器⭐️索引条件下推,千万数据下性能提升273%🚀
|
1天前
|
JSON 测试技术 数据格式
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
5 0
|
1天前
|
存储 关系型数据库 MySQL
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
本篇文章来讨论MySQL字段的字符类型选择并深入实践char与varchar类型的区别以及在千万数据下的性能测试
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%🚀
|
2天前
|
关系型数据库 MySQL 数据管理
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
|
7天前
|
关系型数据库 MySQL 数据库
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
|
7天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
8天前
|
缓存 关系型数据库 MySQL
mysql用in查询大量数据的方法
在MySQL中使用 IN 子句来查询大量数据时,性能可能会成为一个问题
|
8天前
|
Java 关系型数据库 MySQL
JDBC实现往MySQL插入百万级数据
JDBC实现往MySQL插入百万级数据