PC2 1.2.0性能测试 - Mysql造数据
2010-07-20 20:46
543 查看
Mysql造数据
在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 AND id < iNum + 10000;
COMMIT;
SET iNum=iNum+10000;
END WHILE;
END $$
DELIMITER ;
CALL `PERSON_PERMISSION_UP`();
二、为表vaccount_parameter造1200万数据:
需求:parameter_id:1, 11, 21Vaccount_Id:从account表中的400万中取数据realvalue:80assign value:nullgtm_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_parameter造2400万数据:
需求:parameter_id:1, 11, 21person_id: 分为2种, 一种为‘*’, 另一种为从account表中的400万中取数据Vaccount_Id:从account表中的400万中取数据realvalue:10gtm_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`();
相关文章推荐
- HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较
- MySql模拟数据测试数据库性能
- Oracle和MySQL数据插入性能测试
- [Php-Mysql]多条数据的循环插入和一次性插入的性能测试
- mysql数据表分区详细语法及性能测试
- HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较
- 690万数据, 测试MySQL的性能, 和我自己的性能,
- 【mysql】Infobright和mysql数据入库性能测试
- MySQL 5.6 not in 和表关联性能测试对比
- YDB与spark SQL在百亿级数据上的性能对比测试
- YDB与spark SQL在百亿级数据上的性能对比测试
- EXP,EXPDP数据导入本地性能测试
- MongoDB和MySQL性能测试及其结果分析2010
- redis 由浅入深之 高级(数据备份与恢复、安全、性能测试和客户端连接)
- 《使用云计算和大数据进行性能测试》
- KVM性能测试和参考数据
- mysql主主+keepalived高并发高负载情况测试数据一致性问题
- 关于MongoDB在64位服务器上依然报 mmap failed with out of memory 错误的解决方法(附Mysql性能对比测试)
- 性能报告 DotNet测试MYSQL报告(和Java对比)
- 影响性能的测试报告(数据库版)测试源代码