mysql存储过程造数
性能测试时,数据库表通常需要很多数据,此时我们可以用存储过程来造数,以下代码mysql、Oracle都可以用
首先,先查看数据库表的设计,可以看到每张表有多少字段,分别都是什么类型,哪个字段是自动增长的等。然后根据表的结构写一个insert语句即可。
其次,看哪些表涉及到性能问题,然后对这些表进行造数即可。
因为数据库是有一些基础数据的,而一般每张表的id都是不可重复的,所以,为了避免插入的数据和原来的数据冲突,先查一下没张表有多少条数据,还有最大id的值为多少,再在这个基础上设置var变量的初始值即可。
1、ID是自动增长的情况:
//命令行执行
drop procedure if exists p1;
create PROCEDURE p2(IN loop_times INT)
begin
declare var int default 0;
while var < loop_times DO
set var=var+1;
insert into user(name,age,sex,address,TIME)values('王',27,'女','北京','2018-04-19 10:40:32');
end while;
end
//命令行执行
CALL p1(50000);
2、id非自动增长,但为主键的情况:
drop procedure if exists p1_audit_market;
create PROCEDURE p1_audit_market(IN loop_times INT)
begin
declare var int default 5000;
while var < loop_times DO
set var=var+1;
INSERT INTO `audit_market`( `market_id`,`dpy`, `dpy_total`, `check_time`) VALUES
(var,'10.000000000000000000', '20.000000000000000000', '1521600298');
end while;
end
CALL p1_audit_market(55000);
3、除了primary key,还有unique key的情况:
drop procedure if exists p1_statistic_user_option;
create PROCEDURE p1_statistic_user_option(IN loop_times INT)
begin
declare var int default 6000;
declare var_user_id int default 10000;
declare var_option_id int default 10000;
while var < loop_times DO
set var=var+1;
set var_user_id=var_user_id+1;
set var_option_id=var_option_id+1;
INSERT INTO `statistic_user_option` VALUES (var_user_id, '3.618305697752373603',
'4.114131019433091964', '1', '2', '10', '-2', '1', var_option_id , var, '选项A. 涨');
end while;
end
强制停止存储过程:
show PROCESSLIST;
kill id即可
mysql存储过程造数的更多相关文章
- Mysql 存储过程造测试数据
1.Mysql 存储过程造测试数据 -- 创建一个用户表 CREATE TABLE `sys_user` ( -- `id` CHAR (32) NOT NULL DEFAULT '' COMMENT ...
- 性能测试四十:Mysql存储过程造数据
性能测试是基于大量数据的,而进行性能测试之前肯定没那么多数据,所以就要自己准备数据 数据构造方法: 1.业务接口 -- 适合数据表关系复杂 -- 优点:数据完整性比较好2.存储过程 -- 适合表数量少 ...
- mysql存储过程造数据取一个基准用户的各种类型都取一条数据作为基准数据,循环插入
CREATE DEFINER=`user`@`%` PROCEDURE `create_upload_data`(in start_userid integer,in create_counter i ...
- MySQL 存储过程传參之in, out, inout 參数使用方法
存储过程传參:存储过程的括号中.能够声明參数. 语法是 create procedure p([in/out/inout] 參数名 參数类型 ..) in :给參数传入值,定义的參数就得到了值 ou ...
- MySQL 存储过程 经常使用语法
MySQL 存储过程是从 MySQL 5.0 開始添加的新功能.存储过程的长处有一箩筐.只是最基本的还是运行效率和SQL 代码封装.特别是 SQL 代码封装功能,假设没有存储过程,在外部程序訪问数据库 ...
- 熟知MySQL存储过程
存储过程(Stored Procedure)是一组为了完毕特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给定參数(假设该存储过程带有參数)来调用运行它. MySQL 存储 ...
- MySql、PostgreSql、SqlServer三种数据库的造数存储过程实例
主要实例:把临时表tmp_table数据插入到目标表target_table 一.MySql造数存储过程实例 mysql造数 -- 第一步,创建临时表 CREATE TEMPORARY TABLE I ...
- 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数
1.需求简介 最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化.所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成. 2. ...
- mysql 存储过程:提供查询语句并返回查询执行影响的行数
mysql 存储过程:提供查询语句并返回查询执行影响的行数DELIMITER $$ DROP PROCEDURE IF EXISTS `p_get_select_row_number`$$ CREAT ...
随机推荐
- MySQL中如何实现select top n ----Limit
Mysql中limit的用法详解 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. LIMIT 子句可以被用于强制 S ...
- MySQL Server and Server-Startup Programs
1. mysqld-The MySQL Server mysqld,also known as mysql server, is the main program that does most of ...
- Servlet JDBC Example
Develop a web application that should have following features. User can register and then login to t ...
- WPF打印涉及到的关键类
DocumentViewer--->FixedDocument----> PageContent ---->FixedPage
- python的索引问题
之前自己在python索引中一直遇到这样的问题: data = np.arange(12).reshape((3,4)) print(data[:][0]) 想要索引第一列时总是索引到第一行,后来发现 ...
- java 静态代理和动态代理
代理模式 一.概述 代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象.如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目 ...
- 函数使用十:COMMIT
1)DB_COMMIT : DB层的COMMIT,很少用到,大S之前说过,忘了 2)BAPI_TRANSACTION_COMMIT:COMMIT WORK/ ...
- Oracle 常用sql整理
1. 查看当前正在只用的undo段 select s.sid, s.serial#, s.username, r.name, t.STATUS, t.START_TIME, t.USED_UBLK, ...
- 把旧系统迁移到.Net Core 2.0 日记(5) Razor/HtmlHelper/资源文件
net core 的layout.cshtml文件有变化, 区分开发环境和非开发环境. 开发环境用的是非压缩的js和css, 正式环境用压缩的js和css <environment includ ...
- do_bootrk
1. LMB (logical memory blocks) lmb为uboot下的一种内存管理机制,用于管理镜像的内存.lmb所记录的内存信息最终会传递给kernel.在/include/lmb.h ...