zoukankan      html  css  js  c++  java
  • 基于存储过程的百万级测试数据自动生成

     由于之前在写好项目后,由于项目中需要进行sql性能测试,但实际由于数据库中的实际数据量相对比较少,测试效果不佳,所以想着直接采用存储过程,直接生成数据,这样也快速高效。

    编写mysql存储过程,以下以实际项目为例

    -- 建立存储过程
    CREATE DEFINER=`root`@`localhost` PROCEDURE `add_storage_memory`( IN n INT )
    BEGIN
            -- 定义参数
    	DECLARE
    		i INT DEFAULT 1;-- 定义
    		DECLARE commodity_id VARCHAR(40);
    		DECLARE receipt_id VARCHAR(40);
    		DECLARE rec_code VARCHAR(20);
        set autocommit=0;--设置不自动提交 -- while 循环来一下,生成百万数据就靠它 WHILE i < n DO -- 获取 uuid -- 循环体里面进行一系列的业务操作即可,比如A表插入数据,b表插入数据 set commodity_id = UUID( ); SET receipt_id = UUID( ); SET rec_code = CONCAT( "00000", i ) ;-- 插入商品 INSERT INTO `res_provider_product` ( `id`, `provider_id`, `name`, `specification`, `unit`, `price`, `category_id`, `category`, `creation`, `create_time`, `updater`, `update_time`, `status` ) VALUES ( commodity_id, '98989b55-09f7-4871-b5c9-085590e786b2', '竹牙签', '', NULL, NULL, '905f87e7-21bc-47e1-9e61-a85645524cb2', '其他', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-05-18 19:52:04', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-05-18 19:52:04', 1 );-- 插入定价 INSERT INTO `res_product_price` ( `id`, `product_id`, `price`, `start_time`, `end_time`, `creation`, `create_time`, `updater`, `update_time`, `status` ) VALUES ( UUID( ), commodity_id, 2.00, '2018-06-09', NULL, 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:27:43', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:27:43', 50 );-- 插入入库单 INSERT INTO `bis_receipt` ( `id`, `code`, `storage_id`, `provider_Name`, `provider_id`, `total_amount`, `business_time`, `creation`, `create_time`, `updater`, `update_time`, `status` ) VALUES ( receipt_id, rec_code, '4512ef23-b20b-40f0-9ca1-b3316c4cc6c6', '库存供应商', '98989b55-09f7-4871-b5c9-085590e786b2', 4.00, '2018-06-09 00:00:00', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 50 );-- 插入入库单子表 INSERT INTO `bis_receipt_b` ( `id`, `receipt_id`, `code`, `product_id`, `product_name`, `specification`, `unit`, `quantity`, `price`, `total_price`, `category_id`, `category`, `rec_dept`, `comment`, `creation`, `create_time`, `updater`, `update_time`, `status` ) VALUES ( UUID( ), receipt_id, rec_code, commodity_id, '竹牙签', '', NULL, 2.00, 2.00, 4.00, '905f87e7-21bc-47e1-9e61-a85645524cb2', '其他', NULL, '', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 1 ); //最后面添加++操作 SET i = i + 1; END WHILE;   commit;--提交事务 END

      最后面呢,在sql中执行

    call add_storage_memory(100000);
    

      即可让其存储引擎自动执行,执行完成后既可出现大量数据

  • 相关阅读:
    Python Socket 遇到错误: TypeError: a bytes-like object is required, not 'str'
    升级JDK导致无法启动eclipse错误解决办法
    Python安装详细步骤
    如何给电脑配置java环境,以及jdk下载安装
    spring 整合Mybatis 错误:A query was run and no Result Maps were found for the Mapped Statement 'com.xxhh.mapper.XxhhTableBabyCustomMapper.selectAllBaby'. It's likely that neither a Result Type nor a Resul
    spring 整合Mybatis 错误:Error creating bean with name 'loginController': Injection of autowired dependencies failed......xxxxx
    spring 整合Mybatis 《错误集合,总结更新》新手进坑金典新手坑
    xib文件加载研究
    xib文件加载后设置frame无效问题
    xcode中storyboard警告说明
  • 原文地址:https://www.cnblogs.com/lonecloud/p/9167072.html
Copyright © 2011-2022 走看看