Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置执行PL/SQL脚本的最长时间_Sql_Oracle_Testing_Plsql - Fatal编程技术网

设置执行PL/SQL脚本的最长时间

设置执行PL/SQL脚本的最长时间,sql,oracle,testing,plsql,Sql,Oracle,Testing,Plsql,我正在尝试对数据库中的一些表进行性能负载测试。我们使用的方法基本上是一个循环insert语句的脚本。但是,我们想知道系统一分钟可以处理多少次插入。目前,我的脚本如下所示: set serveroutput on variable n number exec :n := dbms_utility.get_time begin for i in 1..5000 loop insert into aoms.buyers (user_id,buyer_cd,buyer_eng_nm,reg_dt) v

我正在尝试对数据库中的一些表进行性能负载测试。我们使用的方法基本上是一个循环insert语句的脚本。但是,我们想知道系统一分钟可以处理多少次插入。目前,我的脚本如下所示:

set serveroutput on
variable n number
exec :n := dbms_utility.get_time
begin 
for i in 1..5000 loop
insert into aoms.buyers (user_id,buyer_cd,buyer_eng_nm,reg_dt)
values(dbms_random.string('L',8),'LT0','LT04','LT05');
end loop;
end;
/
exec :n := (dbms_utility.get_time - :n)/100
exec dbms_output.put_line(:n) 

我希望在60秒内插入尽可能多的记录,而不是在脚本上设置计时器。如何做到这一点?此外,如果我想让这个脚本在本质上更具动态性,并且能够在具有不同结构(列名、主键)的不同表上使用它,我将如何进行呢。可能吗?谢谢。

这将运行60秒:

set serveroutput on
variable n number
exec :n := dbms_utility.get_time + (6 * 100);
declare 
  l_cnt NUMBER := 0;
begin 
loop
insert into aoms.buyers (user_id,buyer_cd,buyer_eng_nm,reg_dt)
values(dbms_random.string('L',8),'LT0','LT04','LT05');
l_cnt := l_cnt + SQL%ROWCOUNT;
exit when dbms_utility.get_time > :n;
end loop;
dbms_output.put_line('Rows inserted: ' || l_cnt);
end;
/
你需要确保这是一个公平的测试。例如,
DBMS\u RANDOM.STRING()
需要时间。调用
DBMS\u实用程序
需要时间。您可能希望将其与
DBMS\u HPROF
结合起来,以了解插入所花费的确切时间

另一方面,您的生产系统可能不仅仅是插入


为了使事情更通用,只需将
插入AOMS.bullers…
替换为您正在运行的任何测试。我不会让它比那更普通。例如,假设您将insert替换为一个函数调用,该函数调用接受“table_name”作为参数,然后查找列以及每个列的数据类型,并为每个列计算出良好的测试数据。所有这些工作(在我看来)可能会扭曲你的测试结果。

非常感谢Matthew,这正是我想要的。还有一个问题。而不是独立的select语句。如何输出插入的行数?可能是dbms输出?我更新了答案以输出插入的行数这里没有提交:P