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
相关文章
|
3天前
|
Java 关系型数据库 MySQL
JDBC实现往MySQL插入百万级数据
JDBC实现往MySQL插入百万级数据
|
3天前
|
运维 DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks还有就是对于mysql中的表已经存在数据了,第一次全量后面增量同步的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
19 2
|
2天前
|
关系型数据库 MySQL 数据库
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
|
2天前
|
SQL 关系型数据库 MySQL
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
【MySQL-7】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
|
2天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
3天前
|
缓存 关系型数据库 MySQL
mysql用in查询大量数据的方法
在MySQL中使用 IN 子句来查询大量数据时,性能可能会成为一个问题
|
3天前
|
SQL Java 关系型数据库
JDBC批量插入mysql数据
JDBC批量插入mysql数据
|
4天前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在DataWorks中,查看ODPS表的OSS对象如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
18 1
|
4天前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之在DataWorks中,将数据集成功能将AnalyticDB for MySQL中的数据实时同步到MaxCompute中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
17 0
|
4天前
|
DataWorks Shell 对象存储
DataWorks产品使用合集之在 DataWorks 中,有一个 MySQL 数据表,数据量非常大且数据会不断更新将这些数据同步到 DataWorks如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
22 3